Просто сам разобрался ...
Метод IEnumerable<T>.Where()
имеет перегрузку, которая принимает индекс текущего элемента - именно то, что доктор прописал.
(new []{1,2,3,4,5}).Where((elem, idx) => idx % 2 == 0);
Этовернул бы
{1, 3, 5}
Обновление: чтобы охватить как мой вариант использования, так и предложение Дэна Тао, давайте также уточним, каким должен быть первый возвращаемый элемент:
var firstIdx = 1;
var takeEvery = 2;
var list = new []{1,2,3,4,5};
var newList = list
.Skip(firstIdx)
.Where((elem, idx) => idx % takeEvery == 0);
... будетвозврат
{2, 4}