Насколько хорошо надо знать С# что бы начать писать сайты на ASP.NET?
Первая строчка звучит, прямо таки скажем, вызывающе ) 2 месяцев изучения и опыт как-то не стыкуются.
Второе предложение правда ставит вcё свои места: был бы опыт в основах языка и в понимании принципов работы с базами данных, и уж тем более c EF , основ ASP.net- вы бы уже писали.
Тут сразу нужно перейти к вашему последнему предложению. Просто на это уходит слишком много времени.
Понимаете в чем дело... она изучение того что вы описали у людей уходят годы и десятилетия. Если для вас два месяца - это срок, задумайтесь, а тем ли вы делом занимаетесь, может программирование - это не ваше?
и вот далее:Необходимо ли изучать потоки, асинхронность , XML и прочее? 
Это ваше дело. Но например, в потоках и xml вы разбираться обязаны, хотя бы что бы не задавать вопросов типа "а где здесь потоки используются? а как сериализовать объект?" По поводу синхронности - асинхронности пока что вам хватит твердой уверенности что есть что. Чем нужно владеть для освоения этой технологии? Необходимо ли полностью изучать с#, JavaScript, Html &CSS ? 
Вы должны сами определиться что для вас первично, а что вторично: frontend или backend.Сам перфекционист и пока не выучу ту или иную технологию полностью не успокаиваюсь.
А это уже ваша личная половая драма, которая совсем не интересует работодателя.
Достаточно базовых знаний C#, HTML, CSS, JS.
Я бы даже рекомендовал сразу создать проект(благо шаблон сайта на asp.net вполне рабочий из коробки) и изучать что там к чему, вносить свои изменения, пробовать сделать что-то новое. Без практики изучать такие технологии считаю бессмысленным. Есть не плохой ресурс с руководствами по asp.net - metanitНеобходимо ли изучать потоки, асинхронность , XML и прочее? 
В целом в asp.net можно жить и без них, но общее понимание таки нужно. XML в последних версиях практически не используется, по большей части его заменил JSON.Необходимо ли полностью изучать с#, JavaScript, Html &CSS ? 
Полностью изучить не выйдет, как уже многие написали. Тем более что технологии на месте не стоят и постоянно развиваются, особенно это касается JS. 
Есть базовые знание - нужно закреплять практикой, дальше опыт сделает свой дело.