Приведу пример на базе упрощенной биржи фриланса. Есть класс разработчик, и есть класс заказчик. У каждого из них свои интересы и задачи. Разработчик может выполнять какие-то работы, а какие-то нет.
1. Поэтому он у себя в резюме пишет, что он, к примеру, может разрабатывать приложения для Android (объявляет интерфейс Android-разработчик).
2. На бирже он находит всех заказчиков, которые раньше давали заказы под Android. Пишет им в личку и говорит, что если что готов рассмотреть их предложения и выполнить работы (подписывается как слушатель).
3. Однажды у заказчика возникает идея приложения. Он поднимает список своих контактов и находит тех, кто может разрабатывать под Android (то есть своих "слушателей"). И рассылает им сообщения.
Пример не совсем полный, но я старался показать что интерфейс - это своего рода контракт. Класс говорит, что я хотел бы принимать определенные события от других классов и у меня есть всё необходимое для этого. Интерфейс описывает как раз, какие методы должен содержать класс, чтобы реагировать на нужные события.