I would do it the hard way (mix of manual and automatic programming) and step through the moves very carefully
You will not be able to compensate for tool radius too handily in planes out of standard position so don't waste time trying to make G41/G42 work, just program directly to tool centerline.
As for tool length compensation, you will need to use the Z length compensation to define the center plane of the tool's horizontal axis, as in the distance from the spindle gage line.
If you are doing this in cam, you could reckon the tool to be similar to a slitting saw on an arbor. The radius of the saw would be equivalent to the distance of the tool tip from the machine spindle centerline. The mid plane of the saw would be equivalent to the right angle spindle's centerline, and the saw thickness would be equivalent to the diameter of the cutter.
This sort of visualization may help you to determine if the approach of the tool is being done in a crash free way.
Suppose you have the tool set in such an attitude that you can drill holes with Y movements of the table. Touch the end of the tool off the relevant part face and set that position as your Y workshift. Set the X workshift to some datum on the part, and set the Z workshift on a top feature of the part, remembering to add the thickness of the tool radius to this position, because you want to program to the center of the tool. This workshift is only relevant to this tool and absolutely should not be used for any other tool!
This should make the position of the part face to be Y0 when programming. For the sake of clarity, Y+ absolute positions should be in the clear, and Y- absolute positions will be cutting (depending on the orientation of the part, of course) so that code troubleshooting is easier to do.
Gcode cycles for drilling ops are likely not going to work in this plane, you'd be looking at coding drill cycles out long hand.
I'd try to stick with profile type movements if I was using cam to make positional movements or actual profile cuts. Using automatic comp (not machine comp), you can then make use of the lead in/lead out amounts to create your depth of cut. Make sure that those movements are perpendicular to the part face in the relevant plane.
If you need to actually mill using XZ or YZ simultaneous movements, that would be considerably more difficult to do in cam. In such an case, I would probably draw the pocketing toolpath out as a backplot (in XY), then rotate it into the part orientation as the part sits on the mill. I would use simple "follow 3d chain" type machining strategies to generate code that follows that geometry. Again, carefully add lead in and lead out movements where needed, and make sure that no automatic Z retractions get posted. If you see that happening, then break the geometry chain as needed, add the lead in and lead out to every dead end start/end point. In simulation, if you use a slitting saw type tool description, this should help alert you to crashes due to unforeseen Z retractions. I don't say that the simulation will be much good for anything other than watching for entry gouges, the retraction gouge is equally dangerous, but won't show up as a gouge warning in 3 axis cam.
Make sure the tool comes clear of the work before it rises to clearance!
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)