Async-await и Task.wait() В чем разница?
Task.Wait() будет блокировать вызывающий поток, а await не будет этого делать. 
Так называемый continuation (то что ниже await) будет выполнен после завершения таска, что ожидается через await. При этом вызывающий поток блокироваться не будет и сможет выполнить еще какую-то работу, например, среагировать на нажатие кнопки если это основной поток GUI приложения или если это асп.нет приложение он сможет начать обрабатывать следующий запрос.
Как только таск выполнится начнется исполнение continuation и в некоторых случаях не гарантируется что это будет тот же поток в котором выполнялся код до await.
Прочитайте разницу между асинхнонностью (async\await) и многопоточностью (Task.wait())