Могу добавить, что скобки оборачивающие функцию нужны для того, чтобы интерпретатор воспринимал ее как выражение, вторая пара скобок это выражение вызова.
(function($) {
/* code */
} (jQuery))
Можно встретить такую запись:
(function($) {
/* code */
} )(jQuery)
Или:
!function($) {
/* code */
}(jQuery)
Ну и другие унарные операторы: ~, +,- если функция ничего не возвращает. Также можно использовать выражение приставания. В качестве параметров обычно передают ссылки на глобальные объекты window, jQuery и др