Then, on the Arduino side, it takes input from the serial, stores the character, checks what character it is, turns on the led for a few miliseconds, as a blink, checks to see if X time has passed, and shuts it off.
You say that like the LED will be turned on, and then off, in a single pass through loop(). That is NOT what will happen.
Sometimes though, the Arduino either barely, a very tiny flash, turns on the led, doesn't turn it on at all, or "freezes / lags".
Sometimes, barely, very tiny, etc. are all weasel words that mean that you don't have any real data.
50 milliseconds IS a very tiny interval. Are you really expecting to see that?
I suggest that you try again to explain what the problem is. Try to stick to facts, without so many weasel words.
You could use an array of pin numbers and an array of times, and have approximately a 50% reduction in code, and a much cleaner presentation.