il tuo script cerca di settare una funzione all'onclick sul button, se il tuo script è nell'head non può funzionare, perchè quando il browser raggiunge la riga:
document.f1.b1.onclick=alarm;
non sa ancora cosa sia f1, quindi l'istruzione non fa nulla.
Mentre se lo metti nel body, dopo il form, funziona, perchè il browser,sa già cosa è f1.
Se metti lo script subito dopo l'apertura del tag body,e prima del form, vedrai che non funziona, per lo stesso motivo dell'head.

quindi tu dovresti mettere la funzione alarm nell'head e associare all'onload della pagina l'associazione dell'evento onclick del button con la funzione. Cosi:
codice:
<head>
<script language="javascript">
var p;
function alarm()
{ alert('alarm'); }
</script>
<body onload="document.f1.b1.onclick=alarm;">
 <form name="f1">
<input name="b1" type="button" value="premi qui" />
</form>
</body>