¿Por qué usamos $ rootScope. $ Broadcast en AngularJS?

Intenté encontrar información básica para AngularJS$rootScope.$broadcast, Pero la documentación de AngularJS no ayuda mucho. En palabras fáciles, ¿por qué usamos esto?

Además, dentro de John Papa'sToalla Caliente plantilla hay una función personalizada en el módulo común llamada$broadcast:

function $broadcast() {
    return $rootScope.$broadcast.apply($rootScope, arguments);
}

No entendí lo que está haciendo esto. Aquí hay un par de preguntas básicas:

1) ¿Qué hace$rootScope.$broadcast ¿hacer?

2) ¿Cuál es la diferencia entre$rootScope.$broadcast y$rootScope.$broadcast.apply?