Depending on your reasons for wanting to create your own distro, it might be a lot of fun, a satisfying long term project, an exercise in futility or a brief but satisfying ego trip.
Reply #3, above, by f33dm3bits was spot on advice -unless- you are in it primarily for the learning experience -and/or- you have some specific and well thought out goal in mind that is not served by some existing distribution.
I tried remastering my favorite distro (microcore, which is designed to make remastering easy) a few years back with the thought of that being a great learning experience and with the not-so-well-thought-out goal of making it even smaller and simpler by eliminating a couple of features that I never use and possibly adding some (nebublous) features that might be useful, if only to me.
From the "learning experience" point of view, the project was a brilliant success. I learned some valuable skills but I also learned that the small team who produces the distro I was starting from -really- know what they are doing! I learned that trimming out the features that I had in mind to eliminate would have made virtually no difference in the size or complexity of the final product. I learned that virtually every feature that I would have added was either already present (my bad for not knowing that ahead of time) or was actually not appropriate for inclusion in the base system (my whole project revolved around only the base OS, not the various user applications and desktop environments which, IMHO, are not to be considered part of the OS even though, in most cases, they are part of the "distribution").
So for all my effort (which wasn't really all that much), I ended up with a "distro" that had the name I gave it but was almost completely the same as the distro on which it was based. Then I realized I would have to maintain it, either by keeping it up to date myself or by re-applying my changes every time the upstream distro was updated. And there was no reason whatsoever for anyone besides myself to want to use my distro. That's where the "brief but satisfying ego trip" ended.
I have neither the dedication to maintain a distro nor the imagination to come up with something that would fit into the fundamentals of the OS and differentiate it enough to make worth a fork.
So the take-aways:
- 1) The "anti-Nike" ( Eekyne (tm) ) motto: "Just don't"
- 2) Or, just do it anyway - it's fun and educational
- 3) If you want your distro to be more than a "flash in the pan"...
- a) Have well thought out goals
- b) Before learning C or assembly (which are great in their own right), learn team building
- c) Revisit your goals with your team and always -focus- on the goals
- d) Get advice from someone besides me because the anecdote above is the extent of my experience with such things.
Lastly, about that GUI...
You'll need the underlying graphical system, like Xorg (and all of its dependencies, of course), a window manager or DE (and all of its dependencies) and possibly a bunch of graphical utilities. Don't be too concerned at the get-go about having a graphical tool for every little setting - because, where your going, your probably not going to be too concerned about (gasp!) editing a few config files with your favorite text editor. That was a gross oversimplification.