AngularJS is a JavaScript framework that adds dynamic behavior to static HTML. It allows developers to create single-page applications by simplifying development and testing through features like data binding, directives, filters, and services. The core components of an AngularJS application include directives that extend HTML attributes, filters that transform template data, data bindings that synchronize expressions with data, and services/factories that provide reusable functions.