Not much of questions here. OpenGL is an overkill. It could provide a nice feature for preview of the final work but definitely not necessary for drawing.
Think of this thing as graphical editor of the CNC data. Everything you should be able to do with the CNC should be doable here. Can change spindle RPM? Make it available to be attached to a node. Can change movement speed? Make it available. Start off with this bare set of features - graphical representation of the activity, editable graphically. "Add node, remove node, move node, delete node, set Z axis level, node properties (including special commands like spindle speed )." Use some (any) gfx library to display it all.
Once you have this start adding automating things: bezier curves auto-transformed into series of lines, circles, auto-connect shapes (lift spindle, move at max speed, lower spindle), import Corel/SVG, offset from shape (this one is important - you draw shape you want to obtain, then move the actual route away or inside by cutter tool thickness), optimization for conical tools (a subject for you to think, conical tools allow for extreme amount of flexibility), import of grayscale bitmaps as 3D projects, depth stepping (important - convert one track into multiple tracks at various depths, increasing Z depth with each step), sweep-fill area (to remove bulk amount of material), optimize shape for multiple tools (first rough, then precise) and so on.
(an interesting point is that you may need to implement a "Travelling Salesman" algorithm at certain point: as the rough tool removed most of material, there are many separate isles for the precise tool to "visit", and they can be processed in arbitrary order, so connecting them according to the salesman problem will minimize tool travel time).