I have been working with 2 very different machines.
Originally, I bought a Boxzy, which is a 3 in 1 CNC machine. It is a 3D printer, a Milling machine, and a laser engraver.
On the surface this sounds fantastic, but under the covers it was a little bit disappointing. The hardware is great. It has a very robust frame and smooth ball bearing screw drives on all three axis. The CNC Mill is actually a Makita Trim Router. Lots of power and speed.
The issue is that it is running firmware that is optimized for an older version of 3D printing software. The Firmware is Repetier on a SunFounder Mega 2560 (Arduino Mega) with an Ultimaker V1.5.7 PCB Main Control Board. You connect to it using a branded Repetier host connected with a USB cable.
This is great for 3D printing, but it only acts as a passthru for CNC milling etc.
What I would really like is GRBL software that I can control from programs such as bCNC or UGCS (Universal GCode Sender).
Another CNC that I have access to is a MiniCNC ts-3040. This is an older device (as I understand) which is interfaced to a PC running Mach3. Great interface and it is teaching me a lot about what a proper CNC interface looks like.
The problem is that this is old technology. It is using a parallel port as the GPIO interface, which limits it to 32 bit Windows, or Linux CNC. I am not sure how other people are dealing with this, but for the 32 bit Windows, it can only run on XP. Whew!. Also, it is a real-time application, meaning that if you even try to do other things on teh PC while it is running a job, it can do strange things. Apparently LinuxCNC handles this, but with RTL (Real Time Libraries) that give the CNC priority. We have not been successful at getting this configured.
I also have access to a LongMill CNC. This is a pretty fantastic hobby level CNC and uses the same Makita Trim Router as my Boxzy.
Anyway, I have been successful at using my Boxzy to mill the odd thing and am having fun.
The most important thing is to find program that lets me visualize the G-Code and to fix issues with the g-Code files that are created from various programs.
Fusion 360 is the go-to program of choice by the people that give me advice, but I find the learning curve pretty steep. There are lots of great videos on Youtube, so if you want to go this direction, there are lots of resources. But, with the recent changes to the features (restrictions for the hobby/free version) I am on the hunt for any freeware or open source programs.
I like Carbide Create for 2D milling (that is, engraving and cutting) because it is simple and easy to control. It gives you good granularity of control over your jobs.