()() non significa niente se la prima parentesi non contiene una funzione. Scrivere:

codice:
(function(){alert(1)})(alert(2));
è la stessa cosa che scrivere:

codice:
var miaFunzione = function(){alert(1)};
(miaFunzione)(alert(2));
e di conseguenza:

codice:
var miaFunzione = function(){alert(1)};
miaFunzione(alert(2));
Ora è più chiaro?