No, cuando tu lees variables de un arreglo no llevan $, solo es directo el nombre:
Código PHP:
$var = $arreglo['key'];
Si te aparece ese error al enviar session_start(), es porque no debe de haber otro contenido HTML o de texto antes de enviar el session_start(), por eso te decia que debes de enviarlo al inicio de tu script.
Saludos.