Можно ли уместить сложную логику в один запрос БД?
Моя практика показывает, что правильнее разбивать сложные запросы на несколько мелких с хорошо просчитанными индексами в БД. Такая схема зачастую работает быстрее.
Задача - определить - можно ли показывать\принимать комментарии от конкретного пользователя.
Это - задача авторизации пользователя (определение его прав). Не стоит смешивать ее с задачей извлечения данных (выборкой). Поэтому, с точки зрения архитектуры, лучше сделать хотя бы 2 запроса: первый - авторизация, второй - выборка.И будет ли это быстрее, чем делать много простых запросов?
Это зависит от запроса. Но, в вашем случае, оптимизация - излишня, т. к. вы делаете приложение в образовательных целях.
В общем, на мой взгляд, несколько маленьких запросов - наиболее подходящий вариант для вас.