Da pra listar infinitas coisas melhores e piores mas acho que criar projetos são as melhores formas de tu ver o que tu precisa.
Exemplo: Quero criar uma app de tarefas online.
Ai começa as dúvidas:
- Vai ter um frontend?
- Aprende: Comunicacão cliente servidor
- Esse front vai se comunicar com um serviço que vai guardar os dados das tarefas?
- Aprende: Banco de dados
- Esse serviço só poder usar quem tem email e senha válidos?
- Aprende: Autenticacao JWT
- Esse serviço, vai ficar indo no banco de dados TODA vez mesmo a pessoa não tendo modificado nada nas tarefas?
- Aprende: Cache utilizando REDIS pra guardar em memória (mais famoso mas tem outros)
- Quando eu terminar esse serviço, ele vai estar na minha máquina, como vou fazer os outros usarem?
- Aprende: AWS (considero a mais utilizada) ou Heroku (muito simples de usar)
Enfim, espero ter dado uma noção de como eu faço, sempre tenta fazer um projeto ou ferramenta, só assim tu vai ver o que tu precisa.
Lembrando que o heroku agora está pago :/ mas realmente é uma ótima ferramenta.
Se quiser uma indicação de ferramenta de deploy gratuita <e tão boa quanto o heroku> é o RailWay, nele dá pra fazer o deploy do back, front e até do banco de dados.