This puts you at ground zero. Don't look into engines yet, because you need some more experience just writing code. Integrating other people's libraries and/or scripting existing engines can come a little later.
I can sort of read code and understand it but I have never actually written anything
To gain experience in game programming, start making games. A common progression path suggested around here is
Guess the Number (user interaction)
Tic-Tac-Toe (taking turns with a simplistic AI and calculating win conditions)
Pong (collision, simple graphics, render loop)
Tetris (Builds on the previous, more complex scenarios and interactions)
Pac-Man (AI, Pathfinding, personalities and reactions)
And then probably some 3D if you want to go that direction.
These are decent frameworks for learning new programming concepts, the "guess the number" game isn't far off from writing a "Hello World" program. They're small, not that ambitious, but completeable in a short amount of time with the right focus, and gives you little victories to keep you motivated.
The majority consensus (for various, often-debated reasons) is to avoid C++ and pick something like Python, C#, or Java. The more-agreed-upon followup is to pick whatever language works for you, but stick to it. The more time you spend in the same language, the more you will understand its use and the more productive you can become. The underlying goal is to be able to think like a programmer. Any language lets you accomplish that. I'm partial to C#, your results may vary.
Do I start in visual studio with C# or C++ ... is there a better language for a total beginner?
This is down the road, but I'll answer it anyway. For productivity: find an existing engine. For learning something: use an existing engine. For learning lower level design and lots of potential frustration and stagnation: create your own. Really: don't set out to make an engine. Engines evolve out of writing framework code for a specific game, and then reusing that framework later.
Is it better to create my own engine or try to find a free engine and code off that?
Entirely depends on the game and what it consumes as "levels". I wrote my own map editor, some people can write plugins for 3d tools (like Blender or 3DSMax or Maya) to be able to do level design in those, sometimes it's just a notepad file with numbers in a grid (for tile-based games). There's no catch-all answer.
hat is used for level design? (Software and so forth)