En fait en C contrairement à d'autres langages tu fais tout ce que tu veux, c'est pas parce qu'on t'interdit pas de faire quelque chose que c'est une bonne idée de le faire pour autant.
Les variables globales c'est une mauvaise idée moi non plus je te conseille pas de t'en servir.
C'est utilisé dans certaines vieilleries il me semble comme les "errno" je crois.
Et aussi pour représenter le contexte global de certaines bibliothèques comme gtk2 il me semble ?
Voilà donc si t'as un ensemble de variables qui sont utilisées un peu partout dans ton projet, au lieu de les mettre globales tu peux définir une structure qui contient toutes les données dont t'as besoin et tu passe une instance de la structure a toutes les fonctions qui en ont besoin.