I have a really simple problem. I want to add a number 1 to the end of a value. So if I return a mesh name MeshName, I can append a number to the end of it so the value becomes MeshName1.
Mesh is an object. What you get with str() is the string representation of your mesh object. String representation happens to be what the developer programms it to be. It can be objects name, it can be something that describes the object, or it can be some other textual information about the object. (In some rare cases it can be a textual representation which is needed to construct an identical object.)
I have a bit hard to test the idea, but what you should be doing in this case, is to change the name attribute of your mesh object. Something like
mesh.name = mesh.name + "1"
If you want to make some clones of your mesh structure, or delete meshes, then use the mesh object itself, like you wrote in your last example.