Как структурировать Laravel приложение?
Как хотите. Главная проблема - заблуждение о том, что laravel дает готовую структуру которой надо свято следовать - а все как раз наоборот. Он из коробки дает возможность строить структуру так, как вам хочется, без каких либо последствий.
Я всегда сразу же разбиваю приложение на модули (домены) и там отталкиваюсь от нужной мне структуры.
Слепо переносить код из контроллера в сервис не имеет смысла, имхо.
Да. Зовется Repository - дополнительный слой абстракции, не зависящий от конкретного метода хранения данных.Лучше создать новую директорию, это немного удобнее, чем кидать все модели в корень.Для создания своего функционала, который достаточно объемен, по идеологии Laravel, требуется создавать Service Provider.
В целом пример хороших практик структуризации проекта можно подсмотреть в Laravel Boilerplate.