Wie isst man einen Elefanten? - In kleinen Stücken...
Wenn Dir die Formel zu abstrakt und unverständlich ist, dann zerlege die 
Aufgabe in so kleine Stücke, dass Du jeden Teil davon nachvollziehen 
kannst.
Du hast:
- eine Taktfrequenz,
- einen maximalen Timer-Zählumfang,
- verschiedene Timer-Vorteiler-Stufen.
- eine Wunschvorstellung für das Intervall zwischen den
  Interrupt-Aufrufen
Du suchst:
- den optimalen Timer-Vorteiler,
- den Compare-Wert, der bei dem gewählten Vorteiler das gewünschte
  Intervall ergibt.
Rein logisch, ohne jede unverstandene Formel, kann man erstmal schaun, 
wie groß das gewünschte Intervall ist, wenn man es micht in 
Millisekunden, sondern in CPU-Takten betrachtet. Bei 8 MHz CPU-Takt 
entspricht eine Millisekunde (bzw. 1 kHz) 8000 Takte.
Du musst also _alle 8000 CPU-Takte einen Interrupt auslösen._
Nun entscheide Dich für einen der verfügbaren Timer und schau Dir dessen 
maximalen Zählumfang an.
Ein 16-Bit-Timer kann bis 65535 zählen, 65536 entspricht 0. Damit 
könntest Du die 8000 Takte ohne Probleme abzählen, der Timer kann ohne 
Vorteiler arbeiten, also direkt die CPU-Takte zählen. Du setzt dazu den 
Compare-Wert auf 8000 und wählst (falls vorhanden) den CTC-Mode (Clear 
To Compare-match). Das macht natürlich nur Sinn, wenn der Timer keine 
anderen Aufgaben zu erledigen hat.
Willst Du den 1ms-Takt aber mit einem 8-Bit-Timer erzeugen, dann hast Du 
nur einen Zählumfang von 256 (0 bis 255, 256=0). Damit kannst Du erstmal 
keine 8000 Takte abzählen... Da war doch aber noch der Vorteiler, mit 
dem man den Timer langsamer laufen lassen kann. Um 8000 CPU-Takte zählen 
zu können, bräuchte man einen Vorteiler von 31,25 (8000 durch 256 = 
31,25). Den gibt es aber nicht, der nächste verfügbare Vorteiler ist 64. 
Teilt man die 8000 Takte durch den Vorteilerwert von 64, dann erhält man 
125, das bedeutet, dass der Timer, der ja nur bei jedem 64. CPU-Takt 
einen Schritt weiter zählt, _nach jeweils 125 Takten einen Interrupt 
auslösen soll_. Hierzu bietet sich (bei neueren AVRs) einer der 
Compare-Interrupts an, der oftmals auch mit CTC-Mode ausgestattet ist.
Die Formel macht übrigens nichts weiter, als all diese Zusammenhänge 
zusammenzufassen und den Compare-Wert vom Preprozessor ausrechnen zu 
lassen. Dies ist eine immense Arbeitserleichterung für den, der die 
Zusammenhänge mit links und 40 Fieber beherrscht.
Für den Neuling besteht allerdings bei unbekümmerter Benutzung der 
Formel die Gefahr, dass der (im Hintergrund) ermittelte Wert nicht mehr 
in den Wertebereich der Ergebnisvariable (hier Byte) passt und dadurch 
(oft unbemerkt) unsinnige Werte entstehen. Das könnte einerseits sein, 
dass der Wert zu groß wird und die oberen Bits abgeschnitten werden, 
andererseits kann der Wert zu klein werden, wodurch die Nachkommastellen 
abgeschnitten werden und der Wert ganz schön daneben liegt. Dazu kommt 
noch die Tatsache, dass nicht jeder Preprozessor mit Fließkommazahlen 
rechnet. Der Preprozessor des AVR-Studios (bei ASM-Programmierung) 
rechnet meines Wissens nach z.B. nur mit 32-Bit-Ganzzahlen (long 
integer), da würde die Formel wohl nicht das gewünschte Ergebnis 
liefern.