Beh, prima di tutto ti consigliere di dichiare $ext fuori dagli if
Poi sarebbe piu corretto usare else if al posto di tutti quegli ifcodice:$ext = '' ; if (....
E sopratutto
$ext=gif;
se fai cosi vuol dire che gif è una costante, non una stringa, quindi dovresti metterlo tra virgolette
$ext='gif';
anche per gli altri.
Poi per $ext ti consiglierei di assegnare un volore standard in caso non sia nessuno dei tre oppure far un "return false;" o "return null;" nel caso non possa andare avanti se nessun if ha riscontro positivo.
Molte dei punti sopra potrebbero essere la causa del fatto che "return $ext" non restituisca nulla
Poi ovviamente il "return $ext" lo devi mettere alla fine della funzione, prima della chiusura delle graffe.
Ed il valore ritornerà in queto modo
$variabile_che_deve_contenere_ext = crea_immagine ( ... ) ;