How to fix special characters in node titles?
Drupal does check_plain on titles which removes all html and does some conversion of chars (&amp; -&gt; &amp;amp;). Depending on how the migration went, that could be part of the problem (escaping escaped content). But it's hard to say what the problem is without knowing what you actually got in the database.

Drupal uses the philosophy to store everything raw in the database, and escape it on output. If the legacy system did it differently, you could have the data stored differently than what Drupal expects, and would then need to fix it at the database layer.