Se info NON viene dopo il nodo puntato da *pLista, lo inserisce prima.
Per esempio il nodo di *pLista ha cognome B, mentre info è A.
Il nodo info punterà allo stesso modo nodo di *pLista, cioè B
info->pun = *pLista;
mentre *pLista viene spostato su A.
*pLista = info;
*pLista è il puntatore al primo elemento se è la prima chiamata alla funzione, altrimenti si tratterà del "pun" (passato per indirizzo) di uno dei nodi della lista. Alla fine sarà il puntatore nullo dell'ultimo elemento, quindi la ricorsione si dovrà per forza arrestare entrando nel primo if.
Tieni conto, però, che qui manca una funzione intermedia, ovvero una funzione che riceva in ingresso i dati del contatto e li usi per generare un nodo, per poi passarlo a InserisciContatto.
Il primo if, inoltre, dovrebbe impostare a null il "pun" di info, se non viene fatto prima.