Большая разница в том, что AddRange изменяет список, для которого он вызывается, тогда как Concat создает новый список. Следовательно они имеют различное использование.
Также Concat - это метод расширения, который применяется к любому IEnumerable и возвращает IEnumerable, вам необходим .ToList (), чтобы получить новый список.
Если вы хотите расширить содержимое существующего списка, используйте AddRange.
Если вы создаете новый список из двух источников IEnumerable, используйте Concat с .ToList. Это качество, которое не мутирует ни в один из источников.
Если вам когда-либо нужно перечислить содержимое двух списков (или любого другого IEnumerable), то просто используйте Concat каждый раз, это имеет преимущество в том, что фактически не выделяет новую память для хранения объединенного списка.