Они разные.
Функции первого класса
Значения в языке, которые обрабатываются единообразно повсюду, называются «первоклассными». Они могут храниться в структурах данных, передаваться как аргументы или использоваться в структурах управления.
Можно сказать, что языки, которые поддерживают значения с функциональными типами и обрабатывают их так же, как нефункциональные значения, имеют «функции первого класса».
Функции высшего порядка
Одним из последствий наличия функций первого класса является то, что вы должны иметь возможность передавать функцию в качестве аргумента другой функции. Последняя функция теперь «высшего порядка». Это функция, которая принимает функцию в качестве аргумента.
Канонический пример - «карта».
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
То есть он принимает функцию и массив и возвращает новый массив с функцией, примененной к каждому элементу.
Функциональные языки - языки, в которых функции являются основным средством создания программ - все имеют функции первого класса. Большинство из них также имеют функции более высокого порядка (очень редкими исключениями являются такие языки, как Excel, который можно назвать функциональным, но не более высокого порядка).