Я не понял от кого наследуется context в get_context_data
Это методы миксинов которые используют как ListView, так и DetailView.
Смотреть исходный код Django где вполне себе видно откуда что берется и от кого наследуется.
и зачем вызывается эта функция с передачей словаря,
Обычно она вызывается чтобы получить дефолтный контекст - а проще говоря - переменные которые можно использовать в темплейтах, и добавить туда какие-то свои переменные.
Так же в документации это было описано с классом DetailView, но с классом ListView это так же работает, тогда какое отличие этих классов
Пойти и ознакомиться с базовыми знаниями для для работы с ООП - инкапсуляция, полиморфизм, наследование...