Что не так с моей валидацией в yii2?
Я вам несколько иначе постараюсь объяснить. Валидаций может быть 2 - серверная и клиентская.
Смотрите: когда мы говорим, что email - unique, мы же не передаем клиенту, в js-валидатор перечень всех занятых email-ов, такая проверка осуществляется уже на сервере, если на стороне клиента прошли другие валидации. Тоже самое и с собственноручно написанными php-проверками, они не трансформируются же в js-код и выполняются на сервере в момент вызова метода validate() модели. Поэтому самому для себя, для понимания, что происходит - откройте исходный код html-страницы с формой и посмотрите, какие правила валидации прописаны в js, это здорово поможет разобраться в ситуации. 
Что касается решения проблемы, то либо используйте ajaxValidation, как вам уже написали выше, либо присмотритесь к валидатору Compare Validator. В вашем случае для email не прописано правило unique, следовательно могу сделать вывод, что подсветка зеленым инпутов происходит еще до отправки формы на сервер, т.е. серверная валидация не отрабатывает.
В представлении разрешите ajax-валидацию:<?php $form = ActiveForm::begin([
    'enableAjaxValidation' => true,
    'validationUrl' => ["site/entry"] // опциональный параметр, указывает метод для валидации. По умолчанию обработчик формы.
]); ?>
В контроллере проводите валидацию:if (Yii::$app->request->isAjax) {
    Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

    $model->load(Yii::$app->request->post());
    return \yii\widgets\ActiveForm::validate($model);
}
PS В консоли разработчика браузера убедитесь, что запросы уходят и ответы корректные приходят. Это поможет в решении других ошибок ;)