I like it! You should try quaternion slerp.
I actually recently found un-expected value for this kind of code: glue code. Say we have a nice OpenGL API and it uses 4x4 matrices in a few places, like perspective transforms. Then we need to talk to a 3D math lib that works with 3x4 compact matrices. Having a quick C lib to write glue conversions functions is really nice to have, and can save a bunch of headache.
You should try adding a simple function to convert your matrices or vectors into a float array, that way people don't have to write down a typecast themselves, and can be sure the conversion to float array is correct. Oh just noticed you already did this, nice
You should try looking into the outer product. It can be really good to project vectors onto planes or lines.
Try adding in really common but hard to solve functions, that are possibly difficult to find on the internet. Like converting a click point on screen into a point + direction on the clipping plane in world space, so people can do world space raycasts easily. This is something I recently added to my own tinygl lib (but have yet to release it).
Add in a function to decompose a transform into a scale, rotation and translate matrix. This should be written in a very simple way, which implies efficient; no determinants or full matrix inversions. Then write an inverse function that looks like:
cmatrix inverse(cvector translate, cmatrix rotate, cvector scale);