$(document).ready(function() { ... });
simplemente une esa función al evento listo del documento, Entonces, como dijiste, cuando el documento se carga, el evento se desencadena.
(function($) { ... })(jQuery);
es en realidad una construcción de Javascript, y todo lo que pieza de código hace es pasar el objeto jQuery en función de ($) como parámetro y ejecuta la función, por lo que dentro de esa función, $ siempre se refiere a la jQuery objeto. Esto puede ayudar a resolver conflictos de espacios de nombres, etc.
Así # 1 se ejecuta cuando se carga el documento, mientras que # 2 se ejecuta inmediatamente, con el objeto jQuery llamado $ como forma abreviada
$(document).ready(function(){ ... }); or short $(function(){...});
Esta función es llamada cuando el DOM está listo lo que significa, que puede comenzar a consultar elementos, por ejemplo. .ready() usará diferentes formas en diferentes navegadores para asegurarse de que el DOM esté realmente listo.
(function(){ ... })();
Eso es otra cosa que una función que llama a sí mismo tan pronto como sea posible cuando el navegador está interpretando su ECMA-/javascript. Por lo tanto, es muy poco probable que pueda actuar con éxito en los elementos DOM aquí.
jQuery document.ready vs self calling anonymous function
posible duplicado de [jQuery document.ready vs auto llamando a la función anónima] (http://stackoverflow.com/questions/3259496/jquery-document-ready-vs-self-calling-anonymous-function) –