По сути сервис контейнер, это обьект который хранит сервисы.
Сервис провадеры, это классы, которые регистрирует сервисы в контейнер, и описывают их зависимости.
И затем когда ты в контроллере пишешь index(Request $request), ларавель получает из контейнера этот класс, которые будет создан со всеми нужными зависимостями, и передает в метод.
Это работает на рефлексии
https://www.php.net/manual/ru/book.reflection.php