Devi leggere da destra a sinistra:
const int * = puntatore (*) ad un intero (int) costante (const); ossia, l'intero puntato è costante e non puoi quindi modificarlo tramite il puntatore; puoi tuttavia modificare il puntatore. Roba di questo genere è usatissima come parametro di funzione.
codice:
int a=10, b=20;
const int * p=&a;
p=&b; // ok
*p=15; // errore di compilazione
int const * = puntatore (*) costante (const) ad un intero (int); ossia, puoi modificare il valore puntato, ma non puoi modificare il puntatore (a meno di doppi puntatori, non vedo grande utilità per una variabile di questo genere
)
codice:
int a=10, b=20;
int const * p=&a;
p=&b; // errore di compilazione
*p=15; // ok
dulcis in fundo:
const int const * = puntatore (*) costante (const) ad un intero (int) costante (const); ossia, non puoi modificare né il valore puntato né il puntatore. Mai visto usato per davvero. 
codice:
int a=10, b=20;
const int const * p=&a;
p=&b; // errore di compilazione
*p=15; // errore di compilazione