Definition of Widget , Portlet , Component, Extension
Widget is a component that contains both logic and presentation.
Portlet is a special kind of widget that you usually see as a block on sidebar of a web page.
Component is the general term referring to a highly reusable class. A widget or a portlet is a component.
Components are the classes which can help you write the business logic on the basis of your models. Suppose all of your model files are using the same logic, So that logic can be written inside component instead of writing for each controller.e.x. widger or portlets.
Extensions are like the libraries, which basically are not dependent on your models, and hence can be reused anywhere in current or later projects. For example writing any email extension.
Module is a self-contained software unit that consists of models, views, controllers and other supporting components. In many aspects, a module resembles to an application. The main difference is that a module cannot be deployed alone and it must reside inside of an application. Users can access the controllers in a module like they do with normal application controllers.