Also kann ich doch nicht einfach WideCharToMultiByte verwenden und mir einen Wert liefern lassen, da die Rückrechnung nicht unbedingt den selben String ergeben muß, wie der Ausgangs-AnsiString?
Korrekt. Wie du auch schon selber bemerktest:
Ursache sind vorallem die "bösen" Composite-Characters.
Wenn du also keine Bibliothek benutzt, ist die von dir vorgeschlagene eine einfache und gangbare Methode.