Back in university, the general consensus I was exposed to was that functional programming was "hard", and the science behind it was only for Einsteins who built their first space-ship at age 5. I believed it. And, of course, it wasn't true.
Functional programming becomes easy once you drop some of the assumptions of what programming is. In principle you need to understand less! No difference between references and values, no state changes, no error handling, no locks, fewer worries about refactoring...
As for the theory, I haven't encountered anything that is difficult to understand once sliced up in small parts. There is a lot of it, and hearing the more 'advanced' parts without knowing the basics will sound daunting and make no sense, so I'm guessing that is why people believe it's hard.
Many tutorials I've seen will try to teach you a specific functional language, focusing on writing something quickly. In doing so, they risk missing the point. People who are already familiar with imperative programming might even think functional programming is just a guideline saying you should avoid mutation. Besides, the science behind functional programming is interesting. It can also help you make better decisions.
I'm going to treat various subjects from simple to complex. If there's anything particular you want to learn/read about, feel free to ask in a comment. If I don't know it, I will endeavor to learn it.