Why is Linux so complicated?
That depends on how you understand complexity.
If you mean having relatively simple GUI where you simply point and click to get easy to understand functionality working, sure, Linux looks much more complicated.
Linux is a UNIX-ish system, meaning it is driven mostly by command line. That requires incomparably more upfront effort investment than GUI just to get your way around the system.
E.g. if you want to check free disk-space in Windows, just click Computer. If you want to check free disk-space in Linux, you have to issue “df -h” command and remember that “df” is checking disks-pace allocation in the first place and that “-h” is making df display the info in human-readable format and be able to find the filesystem you mean based on mount-point and/or disk device.
There’s nothing to see and click. If you don’t recall it, you can’t do it. So you have to memorize a lot of cryptic commands first, ideally with important switches. That’s the “hard” part.
I’d call that “surface complexity”. Linux / UNIX-ish systems like BSD have this complexity very high compared to Windows or other primarily GUI-based systems. There are so many commands, hundreds of options, switches, ways you can combine all those commands into pipes, scripts…
Then there’s issue of “deep complexity”.
It may surprise you, but internally Linux is much simpler than Windows. Long in the past somebody mapped system call graph of Windows running MS web-server (IIS) and Linux running Apache, this is Windows:
And this is Linux: