А есть ли разница: абстракт и интерфейс?

Вкратце: Интерфейс - это форма взаимодействия с любыми классами, которые его реализуют, а абстрактный класс - это предок, который определяет не только особенности поведения (методы), но и некоторые аспекты самого объекта (поля/свойства).

А теперь более расширенная версия:
Интерфейс - это "что необходимо уметь, чтобы такое можно было создать и называть этим именем ("выполняемый", "перечисляемый", "уничтожаемый", ...)". перефразирую. Все, кто реализуют интерфейс, обязательно (как-то) умеют делать всё, что в описании интерфейса перечислено, и больше интерфейс не определяет и не имеет ничего!
Абстрактный класс - это класс, который тоже говорит, что объект такого типа, как он, должен что-то уметь делать, обязательно, но сам он не умеет, он только объявляет, что нужно бы уметь еще и вот это, из чего и что в результате получить. Но не определяет - как. Объект такого типа создать нельзя, можно только на его основе построить другой класс, который будет делать уметь. И полноценный объект такого класса уже можно будет создать. Абстрактный класс, в отличие от интерфейса, может что-то и уметь, и очень много. И что-то иметь, но не обязательно. Важно то, что он хотя бы что-то оставляет "на потом", наследникам, только определяя, что.