Как правильно согласовать код с основным циклом Loop(), и аппартными прерываниями, таймерами?

И что смотреть? У тебя вектор прерывания по переполнению, таймер всегда считаетдо 255, кроме нескольких режимов, которые надо отдельно настраивать.
И теперь скажи, к чему у тебя там ocr2a =250, если оно ни на что не влияет?

Кто тебе вообще сказал, что значение ocr2a как-то влияет на частоту твоих прерываний?

Никто не говорил. Но я так понял из ДШ.
OCR2A устанавливает значение для сравнения с текущим значением счетчика таймера TCNT2.
Когда значения совпадают, вызывается прерывание.
Т.е Timer2 будет считать от 0 до 255, с шагом 1/64. Когда счетчик достигнет максимального значения ( OCR2A = 250;) и переполнится, возникнет прерывание по переполнению.

Почтайте про переполнение что ли …

Вызывается прерывание по совпадению.
У тебя в голове каша

Мне кажется там желтая вода …

Тема с таймерами не такая простая, для новичка. Да, я не правильно понял.
Действительно, регистр OCR2A выставляется тогда, когда нужно прерывание по совпадению, а не по переполнению.

Соответственно и функция :

ISR(TIMER2_OVF_vect) {
  SegmentDisp();           // Вызываем SegmentDsp() по прерыванию от Timer2
}

Определена не верно.

Нужно :

ISR(TIMER2_COMPA_vect) {
}

И изменить правильно настройки таймера.

Благодарю за конструктивную критику и подсказку!

Тебе только кажется.