Как в jquery передать переменную js и потом вытащить ее значение обратно?
Ajax запрос выполняется асинхронно. Т.е. запрос отправляется, но ответа никто не ждет, начинается проверка почты регуляркой и т.д. В результате, к тому времени, как с сервера придет ответ ваш скрипт уже закончил работу, и этот VALID уже не используется.
Рекомендую почитать про асинхронные запросы, коллбеки и промисы.
Еще можно все это разобрать на куски, и привязать не на сабмит формы, а на change отдельных полей.
Т.е. юзер вводит мыло - и оно сразу проверяется, не дожидаясь заполнения других полей. Вводит два раза пароль - они сразу сравниваются. Круто же!
В итоге получилось так:// проверка совподения логина в базе
  if (login.length > 0) {
   if (errLogin.length < 1) {
   $.ajax({
     url: "ajax.php?funk=login&login=" + login,
     success: function (data) {
       data = jQuery.parseJSON(data);
       var bdLogin = data[0].login;
         if (login.localeCompare(bdLogin) == 0) {
         VALID = false;
         errLogin = "Пользователь с таким логином уже зарегистрирован";
       }
       $('#errLogin').html(errLogin);
     },
     async: false
   });
  }
  document.getElementById('errLogin').innerHTML = errLogin;
  }