Grpc удобен, ТК там можно сделать персистент соединения и через него гонять сообщения туда обратно.
На rest такое невозможно, и там вы скорее всего будете использовать вебсокет - это несколько устаревший вариант того же grpc постоянного соединения.
В качестве либы для веба я бы рекомендовал echo, у нее хорошая документация, в которой освещены различные кейсы.
Правда, если вы начнёте использовать grpc, то скорее всего выбор веб-либы станет неактуален, тк у вас будет автогенеренный сервер из protobuf спецификации.
Gorm хорош и очень ускоряет работу на стадии создания прототипа, то на более позднем этапе, когда сущностей в системе очень много, с гормом будет чувствоваться уже неудобство. Хотя самое плохое что с ним может быть это откат до raw запросов, которые вам скорее всего порекомендуют противники orm.
Говорят, что есть другие orm на go, якобы лишенные его недостатков, но я не с ними не работал.
А напомните плиз в чём проблема с sql запросами? Я часто слышу подобные утверждения но сути не улавливаю? Нежелание/неумение в sql?