Рассмотри full stack.
Учитывая, что Вы разрабатывали что-то, то сначала это клиент-серверное:
Протоколы, серверно-браузерное отношение, ответы (коды) и шифрование:
0. Let's Crypt и понимание зачем вообще нужны сертификаты. HTTPS - просто протокол. (Вы, конечно, часто его не видите, но он поддерживает заголовки, что стоит учитывать при настройках сервера)
Продакшен (возможно я слишком сурово троллю реальность):
1. CMS (WordPress) - приложение-конструкторы (часто и сайты-конструкторы), которые позволяют "крафтить" сайты (не могу выразиться иначе). Поддерживают часто расширения (на самом деле это сниппеты и какие-то фичи, которые добавляются в шаблоны) помимо шаблонов.
Учимся делать таблицы/Grid и понимаем, что это просто п*ец, если делать руками:
2. HTML - ctrl+c, ctrl+v в свою память. Не самый красивый, но всё же мирового масштаба язык гипер-разметки.
Наводим красоту, макияж, кайфуем от методов селектора. Лучшее, что де-факто в веб.
3. CSS - довольно приятная штука. HTML, как бы, лучше учить именно из задач внешнего вида, которые больше реализуются в CSS. Так как HTML учить, как бы, без задачи сложно. Ну, то есть, непрактично писать HTML-код и думать, что это чему-то учит, так как это просто какие-то словечки. (если надоело учить HTML - учите CSS, а лучше сразу)
Пара*а, кхм. Как бы, язык, как бы, программирования:
4. JavaScript - потрясающего уродства язык. )))
Нет нормальных функций, всё legacy. WebExtension - это вообще п*ец.
Учить, я думаю, стоит тем, что пишите всякие калькуляторы, конвертеры с кнопочками и без, всякие Mario, таймеры. Когда будете использовать DOM (это некое представление объектов CSS, HTML и поддержки браузера различных технологий, которое доступно JavaScript для работы) и начнёте пытаться асинхронные функции писать - Вы поймёте насколько это уродливое нечто. (рекомендую сразу учить альтернативы, вроде Dart и TypeScript, так как последний считаю более хорошей практикой)
4.1. Стоит отметить, что он нынче компилируем в webAssembly, так что можно программировать даже на... C++... правда.. ожидать "alert()", console.log или <p> всё же не получается минуя опытный путь.
5. backend, серверная сторона.
Обычно NGINX/Apache, который способен использовать посредника (к примеру, язык программирования), который будет возвращать нужный ответ (к примеру, с генерацией какого-то кода/HTML к нему).
Получается так, что браузер использует протоколы (0) для обращения к серверу и получения HTML, который подгружает CSS и JS и создавая DOM-объекты он делает, как бы, уровень взаимодействия и обрабатывая взаимосвязь HTML, JS и CSS он меняет внешний вид frontend (то, что возвращает сервер) на то, что Вы видите. Страницы (включая заголовок) могут быть обновлены без явной перезагрузки страницы посредством JS, который используя DOM-объекты просто меняет заголовок, URL (кстати, не может поменять URN насколько мне известно) и содержимое.
Правда немощь JavaScript видна уже в задачах, где асинхронная функция должна преобразовывать любой текст (к примеру, [bbcode], :emojicode
. Адекватная реализация этого невозможна. (без backend-мусора на 20-30 строк вполне компактного и оптимизированного кода)
Смешно, кстати, от CMS. Если Вы видили недавно на всех сайтах в подряд тёмный фон и видео с призывами касательно недавних событий, то эти "взломы" - просто обновления (которые обычно автоматические) расширений для WordPress.
Вот такая забавная реальность.
Что учить? Я думаю, WordPress, CSS, HTML и JS и желательно в таком порядке. (с таким приоритетом; когда WordPress требует JS/HTML что-то ещё - учим то. Надеюсь, Вы поняли принцип)