PHP, 190 Bytes
with register_globals on $x==$_GET["x"]
<?preg_match_all("#[\w*']+| |$#m",$x,$m);foreach($m[0]as$s){if(!$s||$s==" ")echo!$s?". ":" ";else{$l=$p+64+strlen(str_replace("'","",$s));if(!$p=strstr($s,"*")?20-$l%2*10:0)echo chr($l);}}
PHP, 196 Bytes
<?preg_match_all("#[\w*']+| |$#m",$_GET[s],$m);foreach($m[0]as$s){if(!$s||$s==" ")echo!$s?". ":" ";else{$l=$p+64+strlen(str_replace("'","",$s));if(!$p=strstr($s,"*")?20-$l%2*10:0)echo chr($l);}}
If I could assume that there is only one Apostrophe in the middle of a word 194 Bytes
<?preg_match_all("#[\w*]+(<?=')[\w*]+|[\w*]+| |$#m",$_GET[s],$m);foreach($m[0]as$s){if(!$s||$s==" ")echo!$s?". ":" ";else{$l=$p+64+strlen($s);if(!$p=strstr($s,"*")?20-$l%2*10:0)echo chr($l);}}