Exatamente, a função é definida e executada logo em seguida automaticamente.
Todos os frameworks js que conheço geram o js final dessa forma, dentro dessa função anônima auto executada.
Pra entender melhor são dois parenteses ()(), dentro do primeiro vai a função anonima e o segundo faz com que a função dentro do primeiro seja executada (function(){})().
Quanto a segurança, sim, faz sentido pensar por esse lado também, mas sempre aliado com outras práticas