Salut,
à chaque fois que t'as un mot tu rajoutes deux choses à deux tableaux différents :
$array_recherche[]=$mot; //tu mets dans l'array_recherche le mot que tu veux remplacer en gras
$array_remplace[]='<strong>'.$mot.'</strong>';
ensuite à la fin de la boucle (en dehors) qui a rempli les tableaux tu fais un unique str_replace :
$chaine=str_replace($array_recherche,$array_remplace,$chaine);
Concernant le <b> et <strong> la différence vient du fait que le <b> ne signifie pas que le texte en gras a une importance, tandis que le <strong> souligne l'importance du texte, le style choisi a été le gras mais ça aurait pu être autre chose, un peu comme <em> et l'italique, qui diffère de <i> (d'ailleurs non valide xhtml strict)
a +