Модель - это класс, который описывает данные из внутреннего источника данных. Они могут быть фактическими классами из источника (например, EF или WCF-прокси) или могут быть простыми DTO. Это действительно зависит от ваших предпочтений.
ViewModel - это класс, который описывает данные для отображения в представлении. Часто, но не обязательно, данные поступают из классов Model.
ViewModel отвечает за управление классами модели: предоставление их информации представлению и выполнение действий с ними на основе входных данных представления. При этом я предпочитаю не видеть фактическую работу связи во ViewModel. Вместо этого я абстрагирую коммуникации на другой уровень (я называю свой уровень Service, но в этом контексте это может сбить с толку).
По сути, у меня ViewModel делает запросы к уровню Service, который связывается с бэкэндом для извлечения / создания объектов Model, которые затем возвращаются в ViewModel. Это усложняется, если сервисные вызовы асинхронны, но все еще могут быть выполнены.
Для простого примера скачайте пример кода с Practicalmvvm.com .