Собственно не могу понять основное отличие и для чего они были добавлены.
Основным различием между IEnumerable<T> и IQueryable<T> является то, что интерфейс IQueryable<T> позволяет работать с удаленными источниками данных. Например, если у вас есть некоторая база данных и вы хотите выгрузить некоторое отфильтрованное подмножество данных, то при использовании IEnumerable<T>.Where() будут загружены все записи из таблицы, а затем произведена фильтрация, а при использовании IQueryable<T>.Where() фильтрация будет произведена на уровне базы данных, а загружены будут только искомые записи.
подробнее здесь
Продвижение своими сайтами как стратегия роста и независимости