Ответ 1
В С# 8 операторы диапазона позволяют:
var dest = source[100..200];
(и ряд других опций для открытого конца, считая от конца и т.д.)
До этого LINQ позволяет:
var dest = source.Skip(100).Take(100).ToArray();
или вручную:
var dest = new MyType[100];
Array.Copy(source, 100, dest, 0, 100);
// source,source-index,dest,dest-index,count