Intanto studia bene come usare la scanf:
http://www.cplusplus.com/reference/c.../cstdio/scanf/
visto che sbagli i flag di acquisizione richiedendo un float invece di una stringa e per di più assegnandolo a un char**.
E poi come confrontare stringhe ASCIIZ con strncmp:
http://www.cplusplus.com/reference/c...tring/strncmp/

codice:
// scanf("%f", &new_node->CONTATTO.nome); 
 scanf("%s", new_node->CONTATTO.nome);
Non l'ho testato, ma a occhio dovrebbe essere una cosa del genere.
codice:
              PuntContatto_in_rubrica succ, prec, new_node;
              new_node=(PuntContatto_in_rubrica)malloc(sizeof (struct Contatto_in_rubrica));
              if (new_node==NULL) {
                    printf("Errore nell'allocazione della memoria. \n");
                    exit (1);
              };   
              // Annullo il puntatore al prossimo elemento.
              new_node->contattoSuccessivo = NULL;

              prec=NULL; // A che dovrebbe servire? I nuovi contatti si inseriscono alla fine.
              succ=L;
              
              printf("Inserire il NOME del contatto: \n");
              scanf("%s", new_node->CONTATTO.nome);
              printf("Inserire il COGNOME del contatto: \n");
              scanf("%s", new_node->CONTATTO.cognome);
              printf("Inserire il NUMERO del contatto: \n");
              scanf("%s", new_node->CONTATTO.numero);
              printf("Inserire il NUMERO DI CASA del contatto: \n");
              scanf("%s", new_node->CONTATTO.numero_casa);
              printf("Inserire l'INDIRIZZO EMAIL del contatto: \n");
              scanf("%s", new_node->CONTATTO.email);
              printf("Inserire l'INDIRIZZO DI PAGINA WEB del contatto: \n");
              scanf("%s", new_node->CONTATTO.indirizzo_web);
              
              if (succ == NULL) {
             	    // Questo è il primo della lista. 
             	    // Basta restituire il nodo allocato.
             	    return new_node;
              }

              // Cerco l'ultimo elemento della lista.
              // Qui ci si arriva dalla seconda chiamata della funzione in poi.              
              while (succ->contattoSuccessivo!=NULL) {
                  succ = succ->contattoSuccessivo;
              }
              // succ adesso è l'ultimo elemento valido della lista.
              // succ->contattoSuccessivo può puntare al prossimo contatto.
              succ->contattoSuccessivo = new node;
              return succ;
/*              
               && strncmp(new_node->CONTATTO.nome, succ->CONTATTO.nome, MAX_carattere) > 1) {
                    prec=succ;
                    succ=succ->contattoSuccessivo;
                    };

              if (prec==NULL) {   
                    new_node->contattoSuccessivo = succ;
                    printf("Il contatto è stato inserito in rubrica. \n");
                    return new_node;
              } 
              else {
                    new_node->contattoSuccessivo = succ;
                    prec->contattoSuccessivo = new_node;
                    printf("Il contatto è stato inserito in rubrica. \n");
                    return L;
                    }; 
*/