Form requests - это обертка, для того чтобы избежать дублирование правил валидации. Внутри возращаемое значения метода rules() все равно передаётся в метод validate() текущего контроллера.
Muhammad: Валидируются ДАННЫЕ, которые приходят с HTTP-ЗАПРОСА. Ответсвенность контроллера - обрабатывать HTTP-запросы. В эту ответсвенность входят: вызов сервисов и изменение состояния вида. А если у меня простая форма отправки почты например, то для это я должен создать ContactFormRequest и прописать правила там? Или легче будет вызвать $this->validate($request, [.....]) в экшене?
)) Там, где рекомендуют это делать разработчики инструмента (framework, CMS, etc.)
Если вы пишете свой инструмент и придерживаетесь модели MCV - ответ: в модели.