Знаки 
!, 
-, 
+ заставляют интерпретатор вычислить (в данном случае - выполнить) то, что находится справа. Например, в Bootstrap всюду вставлен знак 
+ для этого.
Однако, более правильным было бы переписать код так:
(function ($){
    "use strict";
    
}(this.jQuery));
Это тоже шаблон самовызываемой функции, описан в книге
 Стояна Стефанова "JavaScript. Шаблоны" (люто рекомендую читать не смотря на преклонный для литературы данного типа возраст, где взять - сами знаете).
Обращение к локальным переменным избавляет от головной боли и долгой отладки, когда непонятно, почему при клике на эту кнопку не только обновляется список записей таблицы, но и увеличивается размер шрифта в заголовке страницы. Глобальные переменные - зло, и с этим нужно бороться. Только замыкания, только хардкор.
Что касается скорости - в сравнении с перерисовкой DOM любой ваш код будет быстрым, как молния. И да, обращение к глобальным переменным дороже, чем к локальным, т.к. сначала делается поиск в локальной области видимости, и только потом - к глобальной.
document и 
window можете помещать, можете не помещать - разница будет только в том, что можно использовать краткие имена:
(function (W, D){ 
    // W = window   (1 символ против 6)
    // D = document (1 символ против 8)
    "use strict";
}(window, document));
Всё остальное в указанной книге ну и конечно 
Николас Закас, "JavaScript. Оптимизация производит....