The front page of Joomla site contains of three major parts. The first depends on template and includes colors, styles, and position of elements. The second is the content, the menu items, and list of articles, login form, and other elements produced by Joomla modules. And the third is the content of a current displayed component.

Joomla front page: green - modules, red - content, other - template
Joomla modules are located in the modules folder of the Joomla installation and after installation this folder contains 20 modules for menu, search, login form, banners, etc. They can be configured in Administration section > Extensions > Module manager and each module can be added several times on the page.
An instance of the module has common options, such as position, order, access level, title, list of pages on which the module should be displayed, and custom module-specific options. Horizontal or vertical menu type option of the mod_mainmenu is an example of such option.
Each module may have one or more templates, these templates are saved in the tmpl folder in the module folder. For example, the mod_poll module template is loaded from the modules\mod_poll\tmpl\default.php file. Each module can implement own method for loading template, but most of them use the common way for this, which allows template developer to overwrite the template of the module.
Typical rendering:
$layout = JModuleHelper::getLayoutPath('mod_poll');
require ($layout);
Some of the components have several templates, like mod_newsflash which has horizontal and vertical layout variations.
Content of the component is included by the following line in the template:
<jdoc:include type="component" />
When the page template is processed by the HTML document class, this line is replaced with the
JDocumentHTML::getBuffer(’component’) function call. getBuffer fetches the content saved by the following code fragment in application.php, line 125:
function dispatch($component) {
...
$contents = JComponentHelper::renderComponent($component);
$document->setBuffer( $contents, 'component');
}
The dispatch method is called by the following code fragment in index.php, line 68:
$option = JRequest::getCmd('option');
$mainframe->dispatch($option);
The $option variable contains string ‘com_content’ for the front page request.
So, when the ‘com_content’ string is passed to the JComponentHelper::renderComponent method, it loads the component options, includes main component file by constructing its name using the following pattern:
components\com_{component_name}\{component_name}.php
The content of the main component file specifies how the component processes the request and which operations the component supports. The com_content component creates instance of the ContentController class, registers several actions and then executes the action.
The ContentController class is based on the JController classes, which is defined in the libraries\joomla\application\component\controller.php file. The ContentController only defines the methods unique to the content article, such as display, edit, save, vote, etc.
The display method of the com_content component sets the current view selector, frontpage or article, and calls display method of its parent class, JController. The JController::display method creates instance of the view, using the parameter specified by the ContentController::display method and executes its display method. The view is created by including corresponding file from the components\com_content\views folder. When the front page is displayed, the frontpage\view.html.php is included. This view includes templates from the frontpage\tmpl folder.
The frontpage com_component view can be configured in Administration section > Content > Front Page Manager. The layout of the front page can be configured in Administration section > Menus > Main Menu > Home item > Parameters.