Ti rispondo solo ad alcune domande perchè ora devo scappare. Poi ti risponderò in modo più dettagliato.

1) non so perchè if(isset($_POST)) non funzioni mentre l'operatore ternario si. Farò delle prove e te lo farò sapere.

2) L'operatore ternario fa esattamente quello che hai detto: se esiste $_POST['nome'] lo assegna altrimenti gli dà un valore vuoto proprio per non far rompere con i notice (se è così che la vuoi vedere! ). Questo si fa semplicemente perchè se tali vars non esistono vuol dire che non servono (nel tuo caso) e quindi in questo modo lo fai "capire" allo script.

3) Per le sessioni basta che prima di qulunque output al browser scrivi session_start e poi usi l'array superglobale $_SESSION per memorizzare le tue var. Prova e vedi per crederci!

4) Per lo switch ti faccio un esempio più chiaro appena ho tempo. Intanto comincia a giocare con le sessioni per capire come funzionano.

Ricordati che $_SESSION è un array e come tale non ha liitazioni in quanto a "livelli".

in $_POST['nome'] nome è una chiave e non un valore. A dopo. Ciao!