I have been using Freecad for almost two years now and I think it is an excellent software, once you get over the top of the steep learning curve. As you say, it isn't the most intuitive software, but I find the parametrized way of handling design extremely useful, especially when changes are needed to be made, or want to have high accuracy.
However, I use it exclusively for my 3D printer model designs, but never really managed to create anything for CNC. I guess that's my own fault for not spending enough time to learn how to do it, but I never managed to create any g-code for milling. 3D printing works fine, as a two step g-code generation, first to stl and then to g-code via slic3r. I can of course generate 2D dxf file and them manually, using DXF to G-code (another freeware) generate the g-code, but it is complicated and pocketing is not working for me, so I find that I might as well use other software tools for milling. I wish I could do it in Freecad, but I just can't seem to get it how to do it.