Pero esa variable no es un array. Cuando ejecutas una consulta a la BDD, con el comando mysql_fetch_array mete en una variable (en éste caso $result) el registro actual del resultado.
Es decir, tu bucle lo que hará es recorrer todos los resultados que ha devuelto el query a la BDD y en cada iteración del bucle meterá en la variable $result el registro actual. Como en la consulta sólo has seleccionado el id, la variable (que esa sí es un array) sólo contendrá ese campo, al que se puede acceder con $result[0] ó $result['id'].
Pero no es un array con todos los resultados, contiene un sólo registro. Para que lo entiendas prueba a poner esto:
Código PHP:
$data= mysql_query("SELECT id FROM cantantes WHERE disco_id='3'",$connexion);
while($result=mysql_fetch_array($data))
echo "<br /> ID actual: $result[0]";