simply first create folder structure under view folder like this

in layout.php file set header, footer files.
<?php $this->load->view('includes/header');
//print_r($this->load->view());?>
<?php $this->load->view($main_content); ?>
<?php $this->load->view('includes/footer'); ?>
Now in include folder set header and footer files

Now in any controller you have to passe only the new content to array like this
$data['main_content']='home/welcome'; // welcome is in your new view view/home/welcome.php
$this->load->view('layout',$data);//in the controller you load which layout you want
Now you don't need call header and footer from the controller. You have set them in layout.php and you passe only the new content to it. Same way you can do for administrator panel, in that case create layout for administrator interface.Then, you can set header and footer for administrator interface separetly.