- не надо ли переписать каждый UserControl в свой отдельный проект (.dll) и после этого тягать его в основное окно?
Проекты лучше делать по подсистемам или крупным компонентам в проекте, с учётом имеющихся зависимостей. Не видя вашей ситуации сложно посоветовать конкретное решение, но во всяком случае врядли каждый контрол стоит пихать в отдельный проект.
- что в общем можно прочитать про корректную архитектуру приложения (насколько я понял, вопрос именно по этой теме)?
Raffaele Garofalo, "Building Enterprise Applicatio...- хотелось бы начать работать с версиями своего проекта. Visual Studio Team Services вроде как подходит, откуда начать изучение данного сервиса?
Лучше начните с Git. Можно конечно поработать и со Студийным контролем версий, но раз уж вы не работали еще вообще ни с чем, гит будет более универсальным скиллом ввиду его подавляющей популярности. И да, самое главное - вам не обязательно будет сразу пользоваться каким-то сервисом, проект можно версионировать и у себя на машине, и залить в VSTS при необходимости. Удивительно, как вы до сих пор не пользовались никакой VCS, видимо вы аккуратный и терпеливый человек)
Да, убедитесь что вы разобрались с MVVM. Может быть стоит подобрать фреймворк или самому собрать базовую библиотеку, если уже есть наработки.