Fino a questo punto, ovvero finche' nessuno e' loggato non ha senso mettere un session_start () giusto?
Se utilizzi le sessioni per verificare se l'utente sia loggato o meno, http://www.php.net/session_start è necessario in ogni pagina in cui fai il controllo.

setcookie ("cookie", $valore);
Header ("Location: admin.php");
Per effettuare un redirect in una pagina che manipola le sessioni DEVI richiamare http://www.php.net/session_write_close ed aggiungere il session id all'URL. Per rispettare l'RFC l'URL deve essere assoluto. In certe configurazioni, http://www.php.net/setcookie e http://www.php.net/header location non funziona.

non mi funziona la query di inserimento e non capisco perche'.
http://www.php.net/mysql_error

3)fin qui non ho avviato nessuna sessione.
Utilizzare $_SESSION senza http://www.php.net/session_start è inutile e non porta alla persistenza delle informazioni.