El segundo puede quedar así:
int id;
printf("Ingrese id: ");
scanf("%d", &id);
/* Busca la posicion del registro */
for(i=0; i<N; i++)
for(j=0; j<N; j++)
if(id == reg[i][j].id)
break;
/* Encontrado */
if(i<N && j<N)
printf("La ganancia es de: %d", reg[i][j].sal.ht * reg[i][j].sal.ph);
else
printf("Id no encontrado");
Y el tercero:
for(i=0; i<N; i++)
for(j=0; j<N; j++)
{
if(reg[i][j] == 'm' && reg[i][j].sal.ht * reg[i][j].sal.ph > 500)
printf("Iniciales: %c %c", reg[i][j].na.n[0], reg[i][j].na.a[0]);
}