Your claim that it is over-engineered is unsubstantiated, and from a Haskell user's point of view, plainly false.
The claim that the notation is unreadable is similar.
Haskell's notation is certainly unfamiliar, and that can be frustrating (as all unfamiliar notations are), but it is one of the best designed ones out there.
As for the question: Why learn the type system? Because it helps you encode your program's invariants as types -- allowing them to be verified cheaply and repeatedly by an automated prover (the type checker), rather than being documented and checked by expensive tests.
They are also documentation you can rely on, as it is guaranteed to stay in sync with the program. It means you can get up to speed with other's code much quicker.
They also restrict code in useful ways, encouraging code that is more concurrency-friendly, simpler, and generally better.