Hey Sisko,
This is my understanding:
CharacterMoveToAndTalk is a call that will end up executing multiple actions and moveID is an identifier that can be used in association with the ensuing events that may result from those actions. When you initiate this call, obviously there is some amount of time between when it is used and when the character arrives at its destination and when a dialogue starts. A scripter may want to be informed when the dialogue starts to happen or if the action failed to fully execute. I imagine things can happen like NPCs getting interrupted and killed along the way, etc.
So you can catch on events like:
IF
CharacterMoveToAndTalkFailed(..,moveId,..)
IF
CharacterMoveToAndTalkRequestDialog(..,moveId,..)
IF
CharacterMoveToAndTalkRequestDialogFailed(..,moveId,..)
In each of those events, they also require a moveID. This is how you can catch things happening to a particular CharacterMoveToAndTalk() call. Think of it as a label for that particular execution of the call by which you can refer to it later when wanting to be notified when the state of the subsequent actions progress.
I hope that makes sense.