Как правильно использовать db_index?
1) Да, но возможно не просто тупые индексы
2) Только в случае если True << False или наоборот, иначе вы просто не получите особого выигрыша. И то индекс нужно добавлять на реже встечающееся значение, т.е.
CREATE INDEX ON task(is_on) WHERE is_on = TRUE
3) Нет, т.к. планировщик скорее всего выберет сортировку результата
4) Чем уникальнее значение, по которому выполняется поиск, тем индекс будет уместнее
5) Добавить индекс нужно по полю status
Если запросы по двум полям сразу, то лучше сделать Multicolumn Index: https://www.postgresql.org/docs/10/indexes-multico...