En fait tu réponds presque à ta propre erreur :
Toutes les fonctions sont des closures, même si on ne l'utilise pas toujours.
C'est pas vraiment ça.
N'importe quelle function
peut être une closure si elle fait appel à des variables du scope de son parent.
Dans la pratique, la distinction est extrêmement importante. Savoir ce qu'est une closure et notamment par opposition à une fonction pure (pas de variables "externes" est nécessaire mais pas suffisant : pas d'effet de bord - écriture sur le disque, … -, pas d'appel à new Date()
, random
, …) permet de savoir sur quelles fonctions on peut faire de la mémoïsation ou non.
Et ça, quand on commence à aller chercher des perfs assez importantes (en JS : éviter des manipulations sur le DOM, côté serveur : répondre extrêmement vite sans désérialiser les données reçues, …) c'est extrêmement important.
La currification ou les fonctions de haut-niveau sont un exemple (très intéressant) d'utilisation des closures mais il me semble important de faire comprendre aux débutants ce qui fait le charme certes, mais aussi le danger des closures.