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