quando è così leggi pian piano l'istruzione.

Parti da &a: questa istruzione serve a chiedere l'indirizzo della variabile "a" che tu hai definito di tipo intero nella precedente istruzione.

Poi hai le parentesi, quindi vuol dire che tu questo indirizzo vuoi considerarlo come un puntatore ad intero (int *) ovviamente lo assegni ad una variabile del corretto valore ( int * b)

se esegui questo pezzo di codice così

codice:
    int a = 5;
    int *b = (int *) &a;
    printf("valore di a %d \n" , *b);
a video vedi valore di a 5