There are already C/C++ implementations of most of this, and Matlab implementations, if you go hunting around.
If there’s something specific you need, some of the algorithms have some fiddly parts, but there’s not too much that’s fundamentally difficult to implement in any of them. Any particular part should only take a day or two to build for some one-off use case.
There are tons of them. OS X and Windows both have color management APIs as standard system components, and there are open source solutions for those and other OS's as well (http://www.littlecms.com for one).
See also the fantastic Color.jl, a Julia package with similar functionality. Makes very pretty IJulia notebooks! More info at https://github.com/JuliaLang/Color.jl or just run Pkg.add("Color") at your Julia REPL.
I'd be curious about a comparison of the capabilities and approaches of these two libraries. Color.jl got to be quite comprehensive almost by accident.
Color.jl is excellent! They have a few stuff we don't support like DIN99 colourspace related computations and colour deficiency support, on an other hand I think we have one of the largest dataset around, the features pages will give you a nice overview: http://colour-science.org/features.php
I've been peripherally interested in colo[u]r science for a while, and as a software guy was amazed to discover the complexities of accurately describing and computing color across a not-so-wide range of devices (my LCD screen, your LCD screen, that projector, this printer...).
For example, I was looking for a way to find "perceptual distance" between colours, since the standard RGB rainbow gives more space for green than, say, yellow. Turns out there are colour spaces for that: CIELAB and CIELUV! However, converting between these spaces and RGB is... fun.
(also, a fun way to tick off your illustrator friends is to install F.Lux on their computer)
I'm surprised how at how poorly documented colour profile conversion is. I'm using Django for a webapp that takes images from a bunch of sources and primarily in AdobeRGB, and using Pillow to do the colour profile conversion has been... interesting...