Модуль по сути это пространство имен в данном случае именами будут сервисы, директивы, контроллеры и т.д.
Неверно. Например если есть
file1.jsvar m1 = angular.module('module1', []);
m1.service('myService', function() {});
file2.js
var m2 = angular.module('module2', []);
m2.service('myService', function() {});
то в зависимости от того, кто будет загружен последним, тот и перепишет определение сервиса с именем
myService
Для того, чтобы избежать подобной ситуации нужно добавлять пространство имён в имя сервиса. Т.е.
var m1 = angular.module('module1', []);
m1.service('module1.myService', function() {});
var m2 = angular.module('module2', []);
m2.service('module2.myService', function() {});
----------------------
Ответ по теме:
Технически объявлять что-либо в отдельном модуле имеет смысл только в том случае если это будет использоваться где-то ещё. Т.е. если создаётся библиотека или набор повторно используемых компонентов (сервисов, фильтров, директив и т.д.).
Если же компоненты (сервисы, фильтры, директивы и т.д.) будут использоваться только для данного приложения то не существует причины для того чтобы объявлять компоненты в другом модуле.
Angular.js с версией 1.* не делает различий между одноимёнными компонентами, которые определены в разных модулях.