CodeIgniter is a PHP Framework for which PHP coders can create web applications. A commercial application called Expression Engine is one such example of such an application. CodeIgniter is often included in the same category as other PHP Frameworks; such as Zend, Symphony, and CakePHP.
With so many PHP content management systems out there, a common question could be, “Why would I want to use a PHP framework?”. Well, there are times when using a Framework is the best option; such as a CMS not being able to customize the way you want when you could much quickly code CodeIgniter to make it do the desired job; such as pulling information out of a database.
If 2 professional people had the same html/css template and one was to build a template for Joomla, WordPress, or Drupal and the other for CodeIgniter, CodeIgniter would win by a longshot since templating a CodeIgniter site is almost as easy as templating simple html/css; whereas templating Joomla would require making module and component positions and putting together many other files such as templatedetails.xml
Besides templating, the CodeIgniter user can practically code in either procedural php or with Object Oriented Programming. Using the OOP classes make life much simpler, and required to insert data into a database; while procedural php works in the views to select data very easily.
CodeIgniter takes time to figure out how to use the classes, and add login scripts, ecommerce etc, but after all these are made once reusing is very simple at a further date; and that will cut down development time significantly.