How it works!
When CodeIgniter loads a controller it attaches its own core libraries to the controller so you are able access to them easily using methods such as:
$this->uri or $this->load
When a Module is loaded it is attached to the controller also and it uses references to these core libraries so they can also be called from within the module in the same manner as you would within the controller.
As you load additional libraries or models within your Module the modules_helper attaches them to the Module for you, in the same manner as the CodeIgniter loader does for the controller.
The controller also has access to these new libraries via the Module. ie:
$this->module_name->library or $this->module_name->model
View Partials
When you create a view partial within a module it is best to `return` the view to the caller rather than displaying it directly from the Module otherwise you may get your partial displaying outside of the parent view.
To prevent this happening, loading views within Modules is set by default to create a variable and should always be returned to the caller. ie:
return $this->load->view('partial', $data)
Using a Module as a view partial from within a view is as easy as writing:
<?php echo modules::run('module_name', $data, 'method_to_call') ?>
Hope this helps also.