Чем вам поможет ещё одно объяснение, если вы уже, как говорите, прочитали много других?
distinct отвечает на вопрос "покажи уникальные комбинации таковых полей"
distinct on расширяет стандартное поведение и отвечает на вопрос "покажи данные первой строки из каждой уникальной комбинации таковых полей". А для определения "первой строки" - делает обязательным использование order by.
Используется когда вам нужно найти, например, данные по первому заказу каждого из покупателей в магазине.
Note: postgresql на момент 13 версии не умеет
loose index scan, потому distinct в лоб может быть в зависимости от распределения данных элегантен в написании, но не очень эффективен и объяснять более подходящий алгоритм придётся планировщику вручную.