I've never tried doing that, but the variable won't be processed unless you use double quotes.
Remember, if you do this:
$cool = 'woo';
echo '$cool';
You get: $cool
If you do this:
$cool = 'woo';
echo "$cool";
You get: woo
The quotes are important, so I would try:
exec("c:\\WINNT\\system32\\cmd.exe /c START c:\\serial.exe $cool");
Just a suggestion though, I haven't tested it.