Ah....found the problem.
"COLOR* pixel_color;" needs to be "COLOR pixel_color;". I'm passing a pointer to a color instead of the color vector itself - THATS what was crashing pixel_to_vec().
Dumb, dumb, dumb me. every other capitalised variable declaration requires a * (PANEL*, TEXT*, BMAP*, FONT*, etc etc). I know not ALL of them do though, I need to learn to check these things.
Thank you everyone for your time and input.