Как определить успешность выполнения подфункций в классе?
Эксепшены кидай, в разы лучше и проще будет.
Если у тебя все реально так работает то тут печаль беда а не код. если ты конечно не ссылками переменные получаешь.public function registerUser ( $data  ) { // Обращаем внимание $data

      /* от такого кода ничего не изменится
      $this->prepareData($data);
      $this->checkMail($data['email']);
      $this->checkData($data);
      */

      $this->createUser( $data ); // Обращаем внимание $data
    }
я бы написал так public function registerUser ( $raw_data  ) 
{

      $data = $this->prepareData($raw_data);

      if ( $this->checkMail($data['email']) && $this->checkData($data) ) 
      {
          $this->createUser( $data );
      }
      else
      {
           return FALSE;
      }
}