Joomla! already is a rich featured content management system, but if you're building a website with Joomla! and you need extra features which aren't available in Joomla! by default, you can easily extend it with extensions. There are five types of extensions for Joomla!: Components, Modules, Plugins, Templates, and Languages. Each of these extensions handle specific functionality (some built-in features of Joomla! are implemented using extensions).
Components are the largest and most complex extensions of them all; they can be seen as mini-applications. Most components have two parts: a site part and an administrator part. Every time a Joomla! page is requested, one component is called to render the body of the page. For example, Content (com_content) is the component which handles the display of content; users can view at the frontend of your site and, as an administrator, you can edit the content. Components are the major portion of your page because a component is driven by a menu item and every menu item runs a component.
Examples: Content (com_content), Banners (com_banners), Contacts (com_contact), News Feeds (com_newsfeeds) and Web Links (com_weblinks)
Management feature: Admin head menu > “Components” > (“Contacts” for com_contact)
Modules are more lightweight and flexible extensions used for page rendering. These modules are mostly known as the “boxes” that are arranged around a component, for example: the login module. The Footer is a module. Modules are assigned per menu item. So, you can decide to show or hide the login module depending on which menu item the user is viewing. Sometimes modules are linked to components such as the “Latest News” module which links to the com_content and displays links to the newest content items. However, modules do not need to be linked to components, as a matter of fact they don't even need to be linked to anything and can be just static HTML or text.
Examples: Banners (mod_banners), Menus (mod_menu), Who's Online (mod_whosonline)
Management feature: Admin head menu > “Extensions” > “Module Manager”
Plugins are more advanced extensions and are in essence event handlers. In the execution of any part of Joomla, be it the core, a module or a component, an event can be triggered. When an event is triggered, plugins that are registered with the application to handle that event execute. For example, a plugin could be used to intercept user-submitted articles and filter out bad words.
Examples: Content - Load Modules, Editor - TinyMCE
Management feature: Admin head menu > “Extensions” > “Plugin Manager”
A template is basically the design of your Joomla! powered website. With a template you can change the look and feel of your website. Templates have certain fields in which the component (just one) and modules (as many as you like) will be shown. Templates are easy to build or customize and they provide maximum flexibility in how you style your site.
Management feature: Admin head menu > “Extensions” > “Template Manager”
Probably the most basic extensions are languages. Languages can be packaged in two ways: either as a core package or as an extension package. In essence, both the core and the extension language package files consist of key/value pairs, which provide the translation of static text strings, assigned within the Joomla! source code. These language packs will affect both the front and administrator side of your Joomla site. Note: these language packs also include an XML meta file which describes the language.
Management feature: Admin head menu > “Extensions” > “Language Manager”
There are 4 methods of installing an extension. You can upload an extension, install from a directory, install from a URL or install from web.