Accidenti, si apre un universo intero con questa domanda

La risposta è quindi lunghissima, ma almeno la formulo in versione "per bambini" (che sarebbero quelli che hanno fatto qualche corso, magari all'università, di superbase), per "ex-bambini" (come prima, ma con più esperienza) e per "ex-ex-bambini" (stato di illuminazione maggiore, magari a LED)

Per bambini la risposta è: niente variabili globali. Sono il male. Danno un sacco di problemi di aliasing blablabla sono da evitare come pattern malefico blablabla

Per ex-bambini: in alcuni casi le variabili globali fanno risparmiare così tante rotture di maroni che - sotto stretto controllo - fanno più bene (al portafoglio, nel senso riduzione tempo di sviluppo) che male (alla pulizia del codice).

Per ex-ex-bambini: fai come vuoi, nulla ti vieta di usare tutte le variabili globali del mondo, le quali in generale sono più efficienti di quelle locali. Se sei abituato a scrivere videogiochi in assembler non t'impressioni certo per questi motivi
In certi ambiti esistono SOLO variabili globali, altri SOLO locali, scegli quello più vantaggioso (per il portafoglio)