Una pregunta Sengokushi. Por qué no trabajas con sesiones? Precisamente para lo que tú necesitas es más seguro usar $_SESSION que $_COOKIE ya que mantienes la información del lado del servidor sin dejar información "sensible" en el equipo del usuario, además de no tener que controlar, por ejemplo, el tiempo de inactivida. Y sobretodo, si por ejemplo, un usuario tiene las Cookies deshabilitadas por defecto, nunca podrá entrar en tu web.
A parte de eso, creo que hay una mala explicación de ob_start ya que según pones en el código es para poder usar las cookies, sin embargo, según Php.net sirve para habilitar el uso de búferes de salida.
Y como último, creo que esta url te puede ayudar bastante a encontrar los posibles errores del código:
http://es2.php.net/manual/es/features.cookies.php
Un saludo y a ver si lo sacas.