Fundamentally the reason your digital colours never look the same in print is because pieces of paper typically don't emit light.
I was in my late 20s before I learned about the colors that you can make on a computer screen that have no pigment equivalent (due to emitting, say, blue and red light in equal measure with no green light at all).
Oh, no, it's much worse than that. Like, yes, the differing gamuts of various colour models is an issue, but the real problem is structural.
In brief, computer monitors produce colours additively. They directly emit light of specific wavelengths in order to construct the image you see: this pixel emits so much light in the 435nm wavelength, that pixel emits so much light in the 700nm wavelength, and so forth. How the RGB values you specify are translated into the amount and colour of light that's produced is going to vary depending on the physical capabilities of a given monitor, the display software's settings, and so forth, but in principle this relationship is predictable.
Inks on paper, conversely, produce colours subtractively. They take whatever light – that is, whatever mixture of wavelengths – happens to be striking the paper, and subtract bits of it through absorption until only the wavelengths you want remain to be reflected. Obviously, a surface cannot reflect wavelengths which are not present (barring certain unusual situations which typically can't be replicated with ink on paper, anyway), so the final mixture of wavelengths coming off of that paper is going to depend on what kind of light the ink is receiving.
The upshot is that there is no context-independent relationship between RGB and CMYK colours. Even if the exact same colour falls into both gamuts in principle, how you actually convert from RGB value X to CMYK value Y will require you to make some set of assumptions about the lighting conditions under which the inked surface will be viewed. Any formula you use to get from an RGB value to a CMYK value or vice versa is going to have such assumptions baked into it.
Even working in CMYK to begin with won't help, because the monitor you're working on is still using additive colour, so the colours displayed on your screen are still converted from the CMYK source data based on a set of assumptions about the printed output's viewing conditions.
which is also why the primary colors are different.
why/how the heck can you combine red and green to make yellow? if you're used to mixing paint pigment, that's like
because yellow pigments are primary; you can't mix other colors to make them.
I'm banging my head against the screen trying to figure out why additive primary colors are almost but not quite the same as subtractive—
I guess R & B are near the edges of the visible spectrum and Y and G are near the middle, but I still can't quite figure it out. 
Bearing in mind that this is basically a lies-to-children simplification (i.e., what's actually going on is quite a bit weirder), each subtractive primary is functionally the inverse of an additive primary in terms of its absorption spectrum.
Cyan ink absorbs red light strongly and reflects it weakly, while green and blue light are weakly absorbed and strongly reflected.
Magenta ink strongly absorbs green light, and strongly reflects red and blue light.
Yellow ink strongly absorbs blue light, and strongly reflects red and green light.
Or, in short, cyan ink subtracts mostly red light, magenta ink subtracts mostly green light, and yellow ink subtracts mostly blue light.
Each non-black subtractive primary thus lets you perform targeted removal of a specific cluster of wavelengths corresponding to one of the additive primaries, while mostly reflecting the rest.
(That's also where your colour witchcraft comes from. Since each subtractive primary "eats" exactly one additive primary, you can approximate a subtractive primary by mixing light of the two additive primaries it doesn't eat. That's why combining red and green light makes yellow.)