1° problema risolto
Bene 
In tutti e quattro i casi assicurati che quello script venga eseguito solo dopo che l'elemento id="timer" (o quello che è) sia stato già creato nella pagina e quindi disponibile per la manipolazione via script.
Puoi verificare sulla console del tuo browser (pigia F12 per aprirla) se salta fuori qualche errore di script; dovresti vedere una cosa del tipo: TypeError: counter is null
La funzione getElementById infatti, per essere eseguita correttamente, ha bisogno che l'elemento specificato sia già creato e disponibile sulla pagina.
In poche parole, nel markup HTML dovrai "includere" quello script dopo l'elemento in questione (meglio se alla fine del <body>).
In alternativa puoi includere lo script dove ti pare ma utilizzare l'evento load della finestra per lanciare la funzione countdown() in modo che quello script sia eseguito solo al termine del caricamento di tutta la pagina.
Inserisci quindi lo script dove e come meglio ti pare ma "avvolgi" la chiamata della funzione in questo modo:
codice:
window.addEventListener('load', function(){
countdown(2, true);
}, false);
Ragazzi ho risolto! Ho preso un altro codice js ed adesso funziona correttamente.
Probabile che questo script abbia appunto un accorgimento del genere per essere eseguito correttamente quando quello specifico elemento risulta disponibile.
Buon proseguimento