1) As it appears you want one window with a lot of controls in it, then yes - it sounds reasonable to have user controls and one window. :)
2) Yes. And make sure everything is databound, not set by code. Make sure INotifyPropertyChanged is implemented (personally I do it all the way from the model, some just in the view model - but then you need to make sure the view models communicate with each other as needed).
3) Look here:
WPF Layouts - A Visual Quick Start[
^] and remember you can nest controls (so put a stack panel inside a dock panel). And of course you can have user controls as well with their own internal layout, making it easier to modularize the program. The right approach is whichever is most logical to you... you are the one having to maintain it in the future.
4) The first thing you need to realize is WPF is all about databinding. If you are not databinding your view to a view model you are most likely doing it wrong, and you need to ask how to do it. Don't continue writing code that update values in the controls directly.