Всё просто :). Цель этого трюка — написать обёртку foo(), которая вызывает bar() в указанном контексте context и с переданными аргументами arg1, arg2 без лишних теложвижений.
В традиционном виде, это выглядело бы так
function bar(arg1, arg2) {}
function foo(context, arg1, arg2) {
 bar.call(context, arg1, arg2);
}
Или так для произвольного числа аргументов:
function bar() {}
function foo() {
 var context = arguments[0]; 
 var args = Array.prototype.slice.call(arguments, 1); //делаем массив аргументов для bar
 bar.apply(context, args);
}
Вместо этого салата использовать трюк с call.apply:
function foo() { 
 Function.call.apply(bar, arguments);
}
Работает это так: aplly вызывает Function.call на объекте bar c переданными в foo параметрами. То есть получаем следующее для самого первого примера с context и arg1, arg2: 
bar.call(context, arg1, arg2)
Что нам и нужно.