1) Можно получить $request->all() и уже в получившийся массив записывать новый birthday, а затем уже валидировать. Но лучше тут написать свой
кастомный валидатор, чтобы он валидировал исходный birthday.
2) Потому что эти данные нигде не выводятся. Нужно в полях добавить value="{{ old('password') }}":
<input id="password" name="password" type="password" class="form-control" value="{{ old('password') }}">
3) Есть правило "confirmed", которое как раз проверяет подтверждение поля:
$rules = [
'password' => 'required|confirmed'
];
Оно смотрит есть ли поле
password_confirmation и совпадает ли оно с полем
password
Изучаем имеющиеся правила валидации
https://laravel.com/docs/5.2/validation#available-...
4) Делать $request->except(['_token']) не обязательно. (тут User::create($request->except(['_token']));)
Лучше в User прописать $fillable поля, тогда не будет никаких проблем с сохранением.