int main( void )
è consuetudine scrivere void se non ci sono parametri, come lo è scrivere return 1; se il programma termina su sistemi *nix e linux per segnalare che il programma è terminato con successo (su windows non so cosa segnala ma dovrebbe essere scritto comunque).
printf("Inserisci il cognome del dipendente: ");
scanf("%s",CG);
printf("Inserisci l'anzianità del dipendente: ");
scanf("%d",&AN);
perchè una stringa non è altro che un puntatore a differenti caratteri, cosa che non un intero: questa parte deve essere studiata per essere compresa.
printf("%s %s Anzianità: %d Stipendio: %d", NM, CG, AN, ST);
No.
Se mettevi & davanti alle variabili stampavi il valore dei puntatori (con il relativo %p).
strcpy(NOME, NM);
Copia semplicemente il contenuto di una stringa in un'altra stringa. Non puoi assegnare NOME = NM, non otterresti quello che vuoi.
char *NOME
Studia i puntatori... così ti togli tutti i dubbi.