Почему (function($){…})(jQuery)?
Конструкция (function($){…})(jQuery) изолирует пространство имён плагина. Это гарантия того, что плагин не затрёт чужую переменную, например.
На тот случай если какой-то другой код переопределит переменную $, переопределить переменную jQuery типа сложнее (т.е. это можно сделать только намеренно).