I use a bunch of program for CAD and CAM.
Pycam - limited but good as a starting point and for text engraving.
Cambam - after 40 uses your limited to 500 lines.
would like to try EMC but I don't have a parallel port to use
I suggest learning some basic Gcode programming as well. I don't know how you will set-up you machine, but with an arduino you will also need a way to stream them using grblhoming (love the jogging function), gcodesender, CNCinfusion (great visual tool tracking). Note that grbl is still under heavy development and some gcodes are not supported.
If you learn how to G-code manually, you can make do with 500 lines with cambam and just paste each step in Notepad to make one long program.
For CAD, too many to list.
My favorite but I have no access to one is Inventor. High end (expensive) one like proe, catia, solidworks etc. I heard good things about Alibre but haven't tried it yet, cheapest one IIRC is $200 for single part design.
For freeform one, try google sketchup, 123D by autodesk, blender, did I mentioned they are FREE!