here's the code I used to do it
It should be noted that this code will fade the colour to white since the 255s represent the target colour.
Another thing to note is that this interpolation is not linear; it will change more at the beginning and slow down towards the end, possibly never reaching the actual final target colour due to rounding.
This is probably fine since your colour also fades out.
Linear interpolation, however, takes the two colours and takes a ratio of the two. In this case, you would need to know what ratio of the interpolation you require (basically, how far from first colour to second colour you are. This is quite simple if, as it seems, you have a particle system and know the current life of that particle and its lifespan.
I don't really think there were too many artifacts
One way to test if it's good enough is to fade between full red and full green.
Using RGB components, the mid-transition would be dark yellow.
However, using HSV/HSL, it would be full yellow.
That means that RGB fades from a bright colour, though a dark colour and back to a bright colour.
RGB tends to be fine for most situations, to be fair though