Yup, it does.  Created a new CI app, using the official 2.1.3 release tarball, added a controller with the following code:

```php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Test_headers_sent extends CI_Controller {

        /**
         * Index Page for this controller.
         *
         * Maps to the following URL
         *              http://example.com/index.php/welcome
         *      - or -
         *              http://example.com/index.php/welcome/index
         *      - or -
         * Since this controller is set as the default controller in
         * config/routes.php, it's displayed at http://example.com/
         *
         * So any other public methods not prefixed with an underscore will
         * map to /index.php/welcome/<method_name>
         * @see http://codeigniter.com/user_guide/general/urls.html
         */
        public function index()
        {
                echo "\nHeaders should be sent!\n";
                set_status_header(204);
                echo "\nHeaders Already Sent error should have displayed...\n";
        }
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
```

then tested it with ```php index.php test_headers_sent```, which outputs this:

```html

Headers should be sent!
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  Cannot modify header information - headers already sent by (output started at .../test-app/application/controllers/test_headers_sent.php:22)</p>
<p>Filename: core/Common.php</p>
<p>Line Number: 446</p>

</div>
Headers Already Sent error should have displayed...
```

Definitely not nice for CLI users.  :)