The two books I read and can recommend are Programming Haskell by Graham Hutton & Get programming with Haskell by Will Kurt.
Another source that helped me a lot is the video series Category Theory by Bartosz Milewski [0]. It requires basically no background on category theory and defines all the concepts along the way. Bartosz also uses Haskell code as examples. You only need to know the syntax up to type class to understand.
As for the awful experience people get from learning Haskell, I think it depends a lot on people's expectations.
Most people only learn one language from school or early career, and then migrate their experience from one language to another. You don't learn the concept of "stack" twice, you only "learn" how to express them with a different syntax. So people can "learn" new languages with significantly lower effort than they learned the first language.
And when they find Haskell or other ML-family functional programming languages, they can't find the corresponding concepts in their known language. This time people actually need to learn new concepts as they learned their first language.
The experience is very similar to learning algorithms or OOP design patterns. And I don't think it's harder to learn Haskell up to the level mentioned by the author than e.g. reading the gang-of-four book.
[0]: https://youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa...