Full Stack - это абстракция, за ним может скрываться очень много чего. И бывает он не только в вебе :-)
Как минимум, для веба:
- HTML5 + CSS
- JavaScript + любой популярный фреймворк.
- Любой язык для бэкенда: Python, JavaScript, Go, etc. Вообще, бэкенд сейчас на всём пишут.
- Любая технология автоматизации деплоя (опционально, но лучше иметь представление).
- Любая база данных + её язык запросов.
- Любой веб-сервер (его конфигурация, опционально)
Но лично я не рекомендую учиться именно сразу на Full Stack. В итоге знания будут очень неполные из-за большого фронта обучения. Лучше выучить одну чать, но хорошо. Это позволит начать немного понимать и вторую часть, после чего её можно будет целенаправленно выучить.
Кроме того. Frontend довольно стандартен по технологиям, бэкенд очень различается. Можно стать Full Stack разработчиком со знанием бэкенда, который никому не нужен.
Простой путь: учить фронтэнд (глубоко) и потом догоняться бэкендом под нужды текущей работы.
Хардкорнее: учить бэкенд и постепенно перенимать функции фронтенда на текущей работе.