Mi limito a segnalare gli errori più evidenti che fanno crashare il programma:

1) non hai alcuna garanzia che la i+1-esima stringa del tuo array di stringhe "word" sia "", pertanto la strcmp() nella funzione ricorsiva non è detto che restituisca 0 dopo aver processato "i" stringhe. La soluzione banale è copiare esplicitamente la stringa "" nell'i+1-esimo elemento dell'array subito dopo il ciclo (allocando lo spazio necessario);

2) nella funzione ricorsiva allochi dinamicamente spazio in memoria per i nodi ma non per i loro campi "word" che quindi risultano puntare ad aree di memoria "casuali", non allocate; questo può determinare un segmentation fault con la strcpy() successiva;

3) rivediti il ciclo di stampa della lista e preferibilmente sostituiscilo con un while che è più naturale in quel caso: cosa succede quando head punta all'ultimo elemento della lista? Ne stampi i campi, poi valuti se è nullo (falso) e prosegui con un'altra iterazione, ma essendo quello l'ultimo nodo il successivo sarà NULL e di conseguenza vai a dereferenziare un puntatore nullo.