В чем существенная разница между Button.Click и Button.Command и что лучше использовать?
Ну в WPF популярно использование паттерна MVVM, потому часто используют Binding к данным и командам (из ViewModel) вместо code behind в самом View (Window.xaml.cs).
И у команды, например, удобно, что есть CanExecute, где легко можно задать условия включения кнопки.
Представим, что у тебя имеется две кнопки, которые должны вызывать одну и ту же функцию, при чем если одну кнопку нажали, то обе кнопки должны блокироваться, и становится снова доступными только тогда, когда действие завершиться. 
1) Если это делать с помощью click, то тебе самому необходимо прописывать блокировку кнопок после нажатия на одной из них, а в конце действия самому разблокировать их.
2) Если же это делать с помощью command, то кнопки буду автоматически блокироваться и разблокировываться в зависимости от того, выполняется ли эта команда в текущий момент времени(с помощью события команды CanExecute)