1. async/await никак не относится к потокам
2. Зависит от настроек рантайма и написанного кода. Где-то может быть почти бесплатно, где-то дорого. Где-то много выгоды, а где-то без выгоды.
3. Относительно полностью синхронного кода, есть оверхед по памяти для асинхронной стейт-машины + оверхед по CPU и памяти для работы машинерии.
Зато не нужно выделять целый поток для ожидания IO