Englisch müsste man können...;-)
Im ersten Fall wird abgefragt, ob i 1 ist. Ist das der Fall, wird das
in der Klammer darunter ausgeführt. Anschließend wird (egal was die
erste Abfrage ergeben hat) abgefragt, ob i 2 ist. Ist das der Fall,
dann wird das was in der dazugehörigen Klammer steht, ausgeführt. Wenn
i nicht 2 ist (und nur dann), wird das gemacht, was in der Klammer
hinter dem else steht.
In der zweiten Version wird, wenn i 1 ist, die zweite Abfrage (also ob
i 2 ist) gar nicht mehr durchgeführt (was auch in vielen Fällen
sinnvoll ist, da dann ja bereits vorher festgestellt wurde, dass i 1
ist und demzufolge nicht gleichzeitig 2 sein kann, außer, es wurde
innerhalb des if(i == 1)-Blockes verändert!).
Eine mit else (if) eingeleitete Abfrage wird nur dann ausgeführt,
wenn die vorhergehende(n) Abfrage(n) nicht zutrafen! Das spart i.d.R.
Rechenzeit, da keine unsinnigen Abfragen gemacht werden müssen, wenn
schon vorher klar ist, dass diese eh nicht zutreffen.