функции Login, SetCredentials и т.д. являются методами
сервиса AuthenticationService.
Фабрика - это способ задания сервиса. Разница между .service и .factory лишь в том, что в первом случае вы засовываете конструктор объекта, а во втором - функцию фабрику которая сама разберется как объект создавать.
// вот сервис
function MyService (dep1, dep2) {
this.dep1 = dep1;
this.dep2 = dep2;
}
// А вот фабрика этого сервиса
function myServiceFactory(dep1, dep2) {
return new MyService(dep1, dep2);
}
// в результате в контейнере зависимостей будет крутиться
// 2 инстанса одного и того же сервиса. То есть одинаковый результат
// при двух подходах.
module.service('foo', MyService)
module.factory('bar', myServiceFactory);
В вашем примере фабрика используется баналь потому что надо где-то сделать объект и для этого используется "модуль". Ну мол для инкапсуляции и т.д. Что бы не экспоузить зависимости вашего объекта никому. Ну а Object.create просто для слабых духом.