Абстрактный метод не имеет реализации и тебе нужно его реализовать в наследниках, по аналогии с интерфейсом, виртуальный метод имеет реализацию, но ты можешь переопределить его в классе наследнике.
Что касается применения интерфейсов и абстрактных классов, то тут всё зависит от уровня абстракции и здравого смысла.
Например у тебя есть микроволновка, духовой шкаф и повар, Они все могут выполнить метод Cook, но здравый смысл говорит о том, что микроволновку и духовку мы можем унаследовать от общего абстрактного класса, при определённых условиях, а вот повар в эту иерархию укладывается не очень хорошо. Вот, собственно, и основное правило выбора, если у тебя объекты укладываюся в иерархиию классов, и, при этом, не противоречат здравому смыслу, можно использовать абстрактный класс, если объекты ничем не связаны — интерфейс.