Why is the undecidability of the Halting Problem useful?
Detecting whether a Turing machine loops can be arbitrarily difficult.
For example, pick any problem P and consider the program:

k = 0
done = False
while not done:
  if &lt;k encodes a solution to P&gt;:
    k = 0
  elif &lt;k encodes a solution to ¬P&gt;:
    break
  else:
    k += 1  


This program either terminates or runs forever with repeating configurations, but in order to tell whether configurations repeat, we need to know whether P has a solution. Now just insert a very difficult (undecidable) P.

A real computer has a bazillion configurations. That number is closer to infinity than to any number we can actually comprehend. Turing machines are a better mathematical model of real computers than finite state automata. Something similar happens in physics: the Earth is made from finitely many molecules, but physicists use differential equations that assume matter to be continuous and smooth. That is because the extremely large finite number of molecules is better approximated with the continuum than a discrete system with bazillion states.