$pippo = 'pluto';
$paperino = &$pippo;

// $paperino diventa alias di $pippo, non un' altra variabile ...

$paperino = 'minnie';

echo $pippo; // stampera' minnie



serve a non sprecare inutilmente memoria con copie di copie di variabili, semplicemente alloca un nome alternativo che fara' riferimento allo steso indirizzo di memoria, senza creare quindi 2 stringhe differenti come ad esempio:

$pippo = 'pluto';
$paperino = $pippo;

$paperino = 'minnie';
echo $pippo; // stampera' pluto perche' paperino non era un suo riferimento ma una sua copia


Ora questo puo' essere utile soprattutto quando hai a che fare con arrays, oggetti e tutti quei tipi di variabile consistenti che se copiati di continuo altro non fanno che rallentare ed appesantire il lavoro del server.


in una funzione invece:
codice:
function echoString( &$string ) {
	echo $string;
}
serve ad evitare di appesantire il lavoro di deleting in garbage collection perche' sebbene una variabile all' interno di una funzione sia valida solo al suo interno, quindi teoricamente "dimenticata" a funzione completata, ricevere $string piuttosto che &$string ricreerebbe comunque al suo interno una copia, aumentando la memoria utilizzata inutilmente ed appesantendo comunque il lavoro del server.

NOTA BENE
se utilizzi il riferimento & per parametri di funzione devi passare una variabile e non una stringa ....

ESEMPIO:

echoString( "ciao mondo" );

dara' errore perche' &$string non avra' un riferimento orginario a cui appoggiarsi, percui dovrai usare una variabile ...

$ciaoMondo = "ciao mondo";
echoString( $ciaoMondo );

non dara' errore ma avrai creato una variabile.

Se non avessi messo la variabile per riferimento invece $string sarebbe stata, dentro la funzione, una copia di quella passata, oppure la crazione della stessa.

ESEMPIO:
codice:
function echoString( $string ) {
	echo $string;
}

echoString( "ciao mondo" ); // $string sara' creazione di variabile


echoString( $ciaoMondo ); // $string sara' copia di ciaoMondo

Secondo me ti conviene utilizzare sempre, dove e' possibile, i riferimenti a variabile, perche' male che vada, visto che o in un modo o in un altro una stringa o oggetto che sia viaggia con un riferimento ( che se non c'e' viene comunque creato ) puoi ovviare all' inconveniente di dover creare prima la variabile semplicemente usando una sintassi tipo:

echoString( $myString = "ciao mondo" );

creando e riferendo automaticamente il tutto alla variabile fuori funzione $myString.

Spero di aver chiarito