il ne connais pas
Normal, c'est définit dans la DTD de HTML. Quand tu es en XSL, il ne connait pas parce que ce n'est pas dans sa DTD. Tu peux, soit le rajouter dans le DOCTYPE, soit le mettre sous forme numérique :  
  il le transforme en un espace normale donc inexploitable dans le html je peux entourer de xsl:text cela ne change rien
Non, enfin pas chez moi et pas en théorie.
Il le transforme en ... espace insécable. Ton processeur XSLT a juste jugé que c'était un caractère qui pouvait être écrit directement et pas sous forme d'entité donc il l'a écrit directement. Quand tu as ouvert le fichier avec ton éditeur tu as vu un espace mais c'est un espace ... insécable (forcément, la différence est liée au comportement alors tu ne "vois" rien de spécial par rapport à un espace, le visuel est identique). Il y a peu d'éditeurs qui savent les reconnaitre mais normalement les navigateurs avec un bon charset devraient pouvoir reconnaitre tout ça et les traiter comme il faut.
Bref, ton processeur XSLT fait (probablement) tout à fait ce qu'il faut.
si j'écrie  , il ne transforme pas le & donc inexploitable...
Normal, parce que tu peux très bien avoir envie d'écrire réellement ça.
Utilise la balise xsl:text avec en prime l'attribue disable-output-encoding="yes", puis mets ton .
C'est tout de même super crade comme solution. En gros ça veut dire au processeur XSLT "met moi ce texte en brutal dans le code XML, peu importe ce que c'est ou si c'est valide". C'est tout de même nier beaucoup de l'intérêt du XSLT ça ... tu sors complètement de la logique de la chaîne XML.