Mach3 will show the tool paths, but its simulator doesn't really do what you'd ideally like. A good simulator will permit you do do the following:
1) define the raw stock and its 3D zero point relative to the machine
2) define the geometry of all the tools being used
3) run the program, removing "material" from the stock to show the result
4) allow zooming and 3D panning of the finished work
5) allow measurements of the finished work
6) warn of crashes, including rapid moves into stock, or machining moves with the spindle stopped
7) allow definition of work offsets for cases where multiple parts are milled in the same run
Of course, none of this matters unless you have a g-code program to emulate, so hand-coding or having CAM capability is a pre-requisite. CAM programs need drawings as a starting point, so you either need a pre-made DXF or DWG file, or else CAD capability. Some CAM programs also have CAD.
Even with all the above and a seemingly good emulation run, the emulator will not tell you if your feeds and speeds are good, so you need to learn how to calculate these for any given tool and material combination.
In addition to the cncsimulator program mentioned above, a paid program "cutviewer" is said to be quite good.
I have used a program called "Predator Virtual CNC" that came packaged with the textbook I learned from in school. That free program is limited to g-code programs of 150 lines or less, which is restrictive for CAM-generated programs but is fine for leaning where g-code would be hand-coded. It can be a bit finicky to setup at first, but does work very well.
The texbook I used is called "Introduction to Computer Numerical Control" by Valentino and Goldberg. You could find used copies on the internet, although they might not have the included CD with the Predator programs. This book is quite good in explaining both lathe and mill programming.
The first courses we did all the programming for lathe and mill manually. I can recommend this approach as you then learn all the necessary g-codes. Later we used mastrercam for mill, and mastercam has its own emulator.
In reality, none of this is very hard to learn as long as you take it step by step. as a former software developer, all the computer "stuff" comes naturally. The harder part for me was actually setting up the machine properly and hoping I hadn't made a simple mistake resulting in a broken tool and/or ruined part. (have had plenty!) There is no "feel" with CNC. You push the start button and it either works or it doesn't. Normally you set the tool offsets high and cut air the first time you run a new program, and then single-step the controller the first time you run it for real. Feedback is limited to the noise the mill makes while cutting, the color of the chips, and possibly any sparks/flame/smoke coming off the tool.
My current software arsenal for CNC includes:
Draftsight for CAD
CamBam for CAM
Mach3 for control
G-Wizard for feeds and speeds