Если выражаться "проще википедии", то главная разница между абстрактным классом и интерфейсом в том, что интерфейсы можно множественно наследовать, а абстрактные классы могу содержать не абстрактные вещи.
Что касается их использования... тут все гораздо проще, если понимать, зачем нужен абстрактный класс, а зачем - интерфейс. Абстрактный класс используется, когда мы хотим получить конкретную реализацию, но она должна гибкой. Интерфейс используется, чтоб реализация этой вещи вообще была.