AngularJS is a JavaScript framework for building dynamic web applications. It uses HTML as a template language and extends HTML's syntax to express the components of an application clearly. Angular's data binding and dependency injection simplify writing code. The framework runs entirely on the client-side and works with any server-side technology. Key aspects include directives that extend HTML, data binding, dependency injection, MVC architecture with controllers, filters to transform data, and $http service for AJAX calls. AngularJS applications are defined with ng-app and components like controllers, models and views interact using scopes.