Changing the designs and functions of an operating system

My dream has been creating my own operating system. But I forgot the idea because everybody says it’s too complicated. So I thought why not take an existing one and change it. Probably Linux is the best choice. So I started reading about this topic and got very confused. So now my question is: When I want to start changing the GUI and some functions (like adding a dock or a toolbar like on macOS) where do I have to start? Do I have to make something from scratch or only a GUI, Theme or Desktop environment? I have some experience with C/C++ but I’m a fast learner ;). I hope you guys could help me, and sorry for my semi-good English