WPF is the technology. It is the set of classes that provide for user interface development in .NET, and it is the replacement for Winforms.
XAML is the HTML of WPF. It is the markup language used for WPF. It defines what the user sees, such as a textbox and a label, and what locations they are in. This includes styling. XAML uses the classes defined by WPF.
Then you have a model. This is all the backend knowledge and logic you have to have. Your credit card transactions would live in the model, for instance.
Then you have a view model (MVVM is model-view-viewmodel). Your view model is the layer between your model and view. It helps accommodate your model to your view. The ViewModel's main job is to provide public properties for the UI (XAML). These public properties, which you define, are for the data you want the listboxes etc. to use, and for the code you want to be run when the button is clicked.
Inside of the XAML, you specify which properties of the ViewModel you want to bind to. In MVVM and WPF, the ViewModel is coupled with the UI/XAML, but the model is kept abstracted.
So, to make a long story short:
- XAML is like HTML
- ViewModels provide the data so XAML knows what to populate its UI controls with.
- WPF is only the collection of classes that XAML uses (and the codebehind, but usually not the ViewModel).