I agree with Bregma.
The internet is an awesome resource for tutorials, but if you're just copying code, you're not necessarily learning; you can, though, learn a lot about the general architecture of a game (gameloops, for example) as those can be a little less intuitive (or maybe I'm just slow).
Further, I'd recommend against using an engine for basic games like those you mentioned, as they can strip away a lot of valuable learning opportunities to a new game-programmer (and nothing you'll be making for a long time will actually need or seriously benefit from an engine like UE4).
So, you are pushing someone who is not even comfortable with C++ and knows nothing about games programming to develop their own rendering system (it doesn't matter how simple it is) or input management? I totally disagree with you in that point.
I think it's far easier to learn very high level stuff first, then go deeper and deeper to the lowest level.
Hmm.. at this rate its so easy to start a holy war on which is the best way to learn... and this holy war is not my aim, but just to state my opinion with reasons for the sake of not confusing the OP or anyone else seeking similar advice
I think NoAdmiral and Bregma are right because
1. I read and re-read the OP's post and I cannot see any indication where he stated he is not comfortable with C++. Instead his post indicates that he is not well vast in the language but wants to learn and willing to make the efforts
I'd like to work on my game development skills. I want to create simple games using C++ language.
2. The quote above also indicates he wants to be able to create games, which is ambitious enough in my view
3. The post you quoted or Bregma's did not suggest that OP should write a complicated rendering system but that he should learn and write code actively as against passive learning, or copying code, which is ineffective.
4. Learning without an engine doesn't mean you have to write a complex rendering system. It means for instance OP can learn about vectors maths, simple collision detection, simple game architecture and progress gradually. And also he should try to code these as much as he can and see how it affects games so that when he begins to use engines later he will have a proper knowledge of how things work at the lower level and that would make him a better game developer