С помощью наследования от ModelAdmin django позволяет декларативно кастомизировать админ интерфейс. В данном случае django находит в readonly_fields строку "get_image" и поступает по заранее определённому алгоритму - проверяет есть ли у модели такое поле. Если нет, то определена ли функция с таким именем, принимающее только один аргумент. Если нет(наш случай), то проверяется есть ли метод у данного подкласса ModelAdmin с таким именем и принимающий 2 аргумента. Если такой метод есть, то он вызывается и качестве второго аргумента передаётся текущий объект. Т.е ответ на ваш вопрос - django вызывает этот метод и передаёт obj.
Документация по list_display. Readonly_fields - работают точно также