Angular 2 introduced many changes from Angular 1 including components instead of directives, templates instead of views, and services instead of factories. It uses TypeScript for static typing and classes. Key features include components, data binding with property and event binding, lifecycle hooks, dependency injection, and routing. Components are the fundamental building block and define templates, styles, and logic. Data binding synchronizes templates and classes. Observables replaced promises for asynchronous operations.