A ver, por partes:
Obtener la variable
Tienes que usar el array $_GET de esta manera:
$id = $_GET['id'];
Lo de obtener la variable directamente depende de la configuración de PHP y de la versión, pero se considera inseguro, así que lo normal es que, a menos que hayas trasteado con el php.ini no puedas usarla directamente. Vamos, que tienes que usar $_GET[]
Espacios en blanco
Puedes usar la funcion str_replace para sustituir los %20 por espacios en blanco
(
http://php.net/manual/es/function.str-replace.php). Personalmente no me gusta tener espacios en blanco en las urls, yo haría esto:
echo '<a href="ficha.php?id=' . str_replace(' ', '_', $id) . '">Enlace</a>';
y ya en ficha.php:
$id = str_replace('_', ' ', $_GET['id']); Consejo sobre el id
Parece que estás usando como id en la base de datos un campo de texto, por lo de los espacios en blanco. Evita hacer esto. Como id lo más recomendable es usar siempre un autonumérico. Te evitarás muchos problemas