ExpressionEngine (versions 3 and above) has 4 types of add-on and the differences between them can be confusing at first.
The original three types - available since EE1 - are:
ExpressionEngine 2 introduced two new types:
However, Accessories were removed in version 3.
Each type has a different level of complexity and their own areas of usage (although plugins and modules have some overlap).
(Technically, a further type of add-on - Expansions - also existed. An example of this was the Multi Site Manager. We won’t be considering these an add-on type here).
I’ll introduce each type of add-on separately.