С чего начать изучение Java для web?
Я бы рекомендовал начинать изучение веб-разработки на Java c изучения Spring и ознакомления с основными компонентами Java EE. Ради интереса в дальнейшем можно более подробно ознакомиться с Java EE (ибо Spring и его компоненты сопряжены с Java EE), но за последние годы пути Java EE и Spring разошлись (особенно в плане веба). Плюс сейчас есть проект Spring Boot, который упрощает процесс погружения в Spring.
Про Java EE скажу, что изучать есть смысл только JPA, т.к. оно активно используется в Spring Data JPA; технологии, связанные с вебом - JSP и JSF, нынче не актуальны, JSP заменяется более вменяемыми библиотеками шаблонирования вроде Thymeleaf и Freemarker, а JSF заменяется самим Spring MVC.
Насчёт контейнеров: Tomcat (а так же Jetty и Undertow) - веб-контейнер, который поддерживает только Java EE Web Profile, в то время как Glassfish (а так же Payara, Wildfly и JBoss) поддерживает весь стек Java EE, который нужен не всегда.
Мой совет - учи Spring, а Java EE оставь на досуг.
Начать надо с понимания того, что есть стандарт JavaEE, который включает в себя множество других стандартов, в том числе стандартов web-разработки, таких как сервлеты, JSP,  JSF и прочее. Крайне желательно их знать. Разработанные в соответствии с этими стандартами приложения запустятся на любом сервере приложений. Но не всегда сервер приложений нужен. Для многих задач хватит простого web-контейнера, такого как Tomcat. Что касается выбора фреймворка, Spring настолько всеобъемлющ и популярен, что тягаться с ним какой-либо другой фреймворк просто не сможет. Достаточно открыть любой работный сайт, поискать вакансии java-разработчик и почитать требования. Сильно сомневаюсь, что вы найдёте Grails.