Any stepper motor suitable for CNC work cannot be driven directly from an Arduino and so you need some extra hardware to be able to supply enough current to the motor coils. I understand this can be achieved with a couple of H-bridge chips but most people use a more complete solution like the A4988 stepper motor driver:
You connect the Arduino to the step and direction pin of the board. For each pulse you send on the step pin will cause the motor to move one step. The Arduino code must keep count of the direction and steps to keep track of the xyz position.
The CNC machine I recently build i used a RAMPS 1.4
This board is designed for RepRap 3d printer and holds 5 stepper motor drivers and will attach to an Arduino Mega. It has features such as endstop inputs and mosfets for driving extruders. You can also use the open source code Marlin & PrintRun to control the motors and run gcode. You can get a RAMPS board already fitted with drivers and ready to go from ebay for around £70
Another option is the L6470 driver:
These drivers do a lot of the processing for you. You tell it what coordinates you want the motor to move to and it calculates the rest, including acceleration and deceleration.
hope this helps
Toby