Son diferentes
Funciones de primera clase
Los valores en un idioma que se manejan de manera uniforme se denominan "primera clase". Pueden almacenarse en estructuras de datos, pasarse como argumentos o usarse en estructuras de control.
Se puede decir que los lenguajes que admiten valores con tipos de función y los tratan igual que los valores que no son de función tienen "funciones de primera clase".
Funciones de orden superior
Una de las consecuencias de tener funciones de primera clase es que debería poder pasar una función como argumento a otra función. La última función es ahora "orden superior". Es una función que toma una función como argumento.
El ejemplo canónico es "mapa"
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
Es decir, toma una función y una matriz, y devuelve una nueva matriz con la función aplicada a cada elemento.
Lenguajes funcionales: los idiomas donde las funciones son los medios principales para crear programas, todos tienen funciones de primera clase. La mayoría también tiene funciones de orden superior (excepciones muy raras son lenguajes como Excel, que se puede decir que son funcionales, pero no de orden superior).