Che dire... ho messo nella Closing del form principale Application.Exit()
e vengono chiusi correttamente tutte le form figlie aperte ed il programma si chiude correttamente.
Per quanto ne so al momento, il metodo più pulito è quello di richiamare dal form principale che funge da contenitore il metodo Close di ciascuna form figlia nel momento in cui l'evento Closing del genitore viene generato.
Da quel che ne so io vengono richiamate automaticamente le FormFiglie_Closing delle form figlie aperte quando si esce dal programma.
Grazie a tutti, in special modo ad Alka per la sua disponibilità