Quando falamos de AngularJS ou Angular 1 estamos nos referindo a um framework anunciado pelo Google em 2010, que embora tenha sido muito utilizado, alcançando popularidade suficiente para estar presente em alguns projetos legados ainda hoje, tinha problemas de performance e em sua arquitetura. Principalmente por esse motivo, o AngularJS nunca chegou a versão 2 e foi encerrado em 2016 com o lançamento do Angular 2, um projeto completamente novo, apesar de ter um nome parecido com o do seu predecessor.
Uma nova linguagem e um novo jeito de gerenciar o projeto
Em 2016 o Angular foi lançado tendo como foco fornecer infraestrutura para a criação de aplicações cliente de grande porte, capazes de serem executadas em múltiplos dispositivos. Esse framework é o Angular que utilizamos hoje, seja ele nas versões 2, 4, 5, 6 ou 7.
Foi também nesse momento que a Google decidiu que o TypeScript seria a linguagem oficial para o desenvolvimento de aplicações Angular e não mais o JavaScript, utilizado no AngularJS. Também por esse motivo, o Angular e o AngularJS não tem nenhuma compatibilidade. Além dessa mudança o Angular também ganhou uma poderosa ferramenta de linha de comando, o Angular CLI, dedicado a criação de artefatos para o projeto, deploy e testes.
Angular, Angular 2, Angular 4, Angular n
Agora que ficou clara a diferença entre o AngularJS e o Angular, é hora de entender as suas diferentes versões. A confusão começa porque a Google decidiu que o Angular não teria versão 1, o que faz com que muitos programadores entendam que o AngularJS foi a versão 1 do Angular. Contudo, como vimos não há nenhuma conexão entre os dois. Sendo assim, o Angular 2 foi a primeira versão do framework Angular. No mesmo ano de lançamento do Angular 2, mais precisamente no mês de Dezembro, foi anunciado o Angular 4. A partir disso, novas versões seriam lançadas em um tempo constante, sempre preservando compatibilidade com versões anteriores.
A versão 3 do Angular nunca foi lançada, pois até então o versionamento do código do projeto era feito em um único repositório, fazendo com que diferentes partes dele seguissem o mesmo cronograma de lançamento. Isso passou a ser um problema que dificultava para a equipe de desenvolvimento lançar novas versões do framework e melhorias. Assim, o @angular/router, módulo de rotas do Angular, já se encontrava na versão 3 em determinado momento, mas demais módulos ainda se encontravam na versão 2, impedindo o seu lançamento. Por essa razão, as equipe de desenvolvimento decidiram pular a versão 3 do Angular para que pudessem versionar de forma modularizada o seu código e publicar as novas versões do framework de forma compatível com as suas capacidades de produção.