Penso che serva principalmente per poter fare in modo che piu' variabili puntino lo stesso oggetto senza bisogno di utilizzare l'operazione di deferenziazione.
Inoltre un reference e' per "definizione" costante (Infatti necessita di inizializzazione).

Una volta definito puo' essere utilizzato "in sostituzione" della variabile della quale e' un riferimento (Senza bisogno di * come accade con i puntatori).
Difatti i reference introducono il "concetto" di aliasing.

Ad esempio:

codice:
int v = 10;
int &varRef1 = v;
int &varRef2 = v;

v +=1;//v vale 11
varRef1+=2;//v vale 13
varRef1+=3;//v vale 16
v = 0;//v vale 0
Mi ha un po' sorpreso perche' rispetto al C l'operatore e' utilizzato in maniera sostanzialmente differente.
Se qualcuno volesse chiarirci ulteriormente le ide...