どちらも「最後の」だけど、last の方は今のところの最後、最後にxxxした、てな
意味合いが強いよ。

if (c == 'a') { // if last char is 'a' <- 酷いコメント
 ...
}

一方 final はこれ以上先がないホントの最後。last もこっちの意味で
つかうことも非常に多いけど。逆に final を「今のところの最後」みたい
に使うことはない。

end <- 名詞、自動詞 terminate <- 他動詞