Innanzitutto devi capire come funziona strcmp()

Ritorna un intero che è < 0 se la stringa1 è minore della stringa2, ritorna 0 se uguali, e > 0 se la stringa1 è maggiore della 2

--------------------------------

codice:
while (fin1 && fin2 && (strcmp(cog1,cog2) < 0 || strcmp(cog1,cog2) == 0 && strcmp(nom1,nom2) < 0) )
Il ciclo viene eseguito quando il cognome1 viene prima del cognome2 oppure quandi i cognomi sono uguali ma il nome1 viene prima del nome2

Capita questa capisci anche la seconda riga