Hey man, first of all, congratulations for getting the motivation to go back to coding and trying to make a game on your own, especially at your age (not trying to say you're old or anything, that's just not that common and I respect this). Also please spare me for the upcoming mistakes, I'm from France, my english isn't the best, and I'm typing fast so I might forget words, considering I won't be reading my post after posting it ahaha.
I'm gonna try to answer your questions with the little knowledge I have.
1) to give you an idea, this guy created a "simple" 3D Game engine in 3 years, and it actually rocks, even tho the graphics are not the best : https://www.haroldserrano.com/ , and here is a Quorra topic when he answered and detailed the process of making one https://www.quora.com/When-developing-my-video-game-should-I-use-a-game-engine-or-program-everything-with-C++ (the first answer is him). Now on a personal point of view, creating a game engine AS GOOD as UE4 / Crytek / anything else alone would take I think 5 or 6 years max, being REALLY dedicated to it. A game engine only is (hard) maths and coding, so if you have the required skills in both fields you could do it.
2) Yes it obviously is (to me at least, and this considering I have never done it, but heard people talking / writing about it). As of now, the amount of web devs vs soft devs in the world is about 70% / 30% respectively. Programming complex rendering systems and good looking graphics, as I said, is all about maths. It's maths, maths, and maths, whereas what you call "normal" programming is about using the right words and syntaxes in the right order (even though it requires maths as well in specific fields, but not much as if you would program a, let's say, functional rotating camera in a 3D environment). I don't think graphics programming is the hardest programming field, but it indeed does require a fantastic maths knowledge to create real next-gen and good looking/working stuff.
3) No. As @_Silence_ mentioned it, C++ won't become obsolete before a lonnnnnng time. C++ is the Graal of programming languages (putting Assembly apart) when you need (super duper good) memory / performance optimization. When you program in C++, every single memory section of your program (and thus of your computer) is under YOUR control. Again, same for maths, C++ requires a LOT of practice to use it at least average good.
4) I don't really get the point of your question, but, as far as I know, Unity smartphone games aren't generally slow.
Now my PERSONAL thoughts, these will just be recommandations coming from my point of view as of NOW. If your plan is to create a game engine, having only 3 years of spare time, just forget about it. Considering you're not that good at maths (i don't know about it tho), you forgot about C++ and don't know about its latest updates and usages, and that you've never gotten into graphics programming (even from afar), it will take time, it will take a lot of time. I'm not saying you don't have the motivation to, but if your overall objective is to create a game you can sell so you can slowly get into the indie video game industry (or AAA game industry), start by using a game engine, but use one where you can sharpen and practice your programming skills (I would recommend starting slowly with Unity in C# since you know that well, and when you're ready to take a next step, go for UE4 with C++). After that, if you feel confident enough with your programming language, try to make games with REAL game engines (not a game maker like UE4/Unity). For C# you have XNA / MonoGame, for C++ you have SDL / SFML, etc. This will teach a lot about all the aspects of a video game, even tho these frameworks will spare you with the real low-level stuff. It will be a new step towards graphics programming. After all of this, if you still got time, now you can for some pure OpenGL / DirectX / other graphics API programming. This is what I WOULD do. This might sound full bullsh** to you, and I might ignore many details as of your current situation, but to me that is what you should do.