byの意味は「〜までにやっておく」
byの意味は「〜まで」と訳すと意味がわからないので、「〜までに1回やっておく」と覚えておくと良いと思います。要するに期限を意味します。例えばby 10 pmと言えば午後10時までにやっておく(動詞)という意味になります。I have to finish my task by 5 pm.
(5時までに終わらせなければならない)
この場合は5時までに1回finish my taskをしていれば良いので、5時までに終わらせておけば良いのです。
untilの意味は「〜までずっとやる」
untilの意味も「〜まで」と訳すと意味がわからないので、「〜までずっとやる」と覚えておくと良いと思います。untilは継続を表します。上記のbyの例文でuntilを使えない理由は、上記の文でuntilを使いおかしい文)I have to finish my task until 5 pm.
となると、finish my taskを5時までずっと続けないといけないことになります。通常タスクは1回終われば良いはずなので、同じタスク(my task)が終わった状態が5時まで続くのはおかしくなります。 untilの良い例としては子供の世話を5時までしなければならないなどという場合です。
I have to take care of my children until 5 pm.
この場合は5時までに1回世話すれば良いわけではなく、5時までずっと世話しないといけないというのが自然なのでuntilが適切でしょう。
ちなみにtillという単語がありますが、untilと同じ意味で、untilの代わりに使えます。tillは口語的で、書き言葉はuntilが使われます。文頭は基本untilです。
byとuntilのまとめ
まとめるとbyは期限の意味の「〜まで」(「〜までに」と覚えるべき)
untilは継続の意味の「〜まで」(「〜までずっと」と覚えるべき)
という違いです。下記にイメージで覚えられるように図を書いておきます。