O que é um componente no AngularJS?

Eu estava lendo algumas diretivas e fiquei imaginando qual seria a distinção entre uma diretiva e um componente, quando descobri que há muitos componentes no AngularJS.

Existe um componente de função, tipo componente, componente de serviço, componente de filtro, componente de provedor, etc ... Então, para completar, descobri que um componente de módulo é um componente que consiste em diretrizes, serviços, filtros, provedores, modelos, APIs globais e zombando de testes. Isso tendia a tornar as coisas mais confusas. Não consegui encontrar uma definição de "componente" na documentação do Angular que explicasse as distinções entre os tipos de componentes listados.

Então, o que exatamente é um "componente" no AngularJS? É algo tão simples quanto blocos de código reutilizáveis?

A propósito, eu estou usando a versão Angular 1.4.2 atualmente.

questionAnswers(3)

yourAnswerToTheQuestion