Yes. There's quite a bit going on in that line. If the alpha is omitted, then a will be Qnil (is NIL_P a fast check for Qnil). If there is an alpha, it is converted to the C type double, cast to float (since all values are float and the compiler gives warning when you don't cast stuff like this) and it will be clamped between 0 and 255.
If you have more questions, feel free to ask.