Allora...

CGI è un protocollo di comunicazione tra i webserver (IIS apache, ecc) e degli eseguibili. In pratica tramite quel protocollo è possibile per il webserver ricevere una richiesta http, girarla all'eseguibile, ottenere una risposta e girarla al client.

Gli eseguibili di cui sopra, detti cgi, possono essere script scritti in Perl, Bash, Python, Php, ecc., oppure dei file compilati scritti in C, C++, Pascal, ecc.

Al webserver non interessa nulla se sono script o compilati, l'importante è che siano eseguibili e rispettino il protocollo.

Le estensioni di un cgi possono essere molte:
.pl indica un eseguibile scritto in Perl
.cgi indica un qualunque tipo di cgi script e compilati
.exe indica un file compilato ed è riconosciuto solo da windows.

L'interprete di perl per windows lo trovi su www.activestate.com