When we move a namespace, here's what happens:
1. The namespace gets created at the new location, along with all the tags under that namespace.
2. The old namespace gets a cq:movedTo property that points to the new namespace. Similarly, all the tags under the old namespace get a cq:movedTo property pointing to new tag locations.
3. The new namespace get a cq:backlinks property pointing to the old namespace and similarly all tags under the new namespace get a cq:backlinks property as well.
The old namespace is hidden and is only kept in the repository to resolve tag IDs in content nodes pointing to it. The tag garbage collector removes old tags once no more content nodes point to them.
Now, the significance is, lets say we search for content by tag ids, and we want to search by the new tagid created, then Tag API makes sure that all pages tagged with the new tag and the old tag from where it is moved would be returned. See getXPathSearchExpression(String property) and getGQLSearchExpression(String property) methods.
Also, in the search debugger, when I try to search for the new tag, here is the corresponding XPath query generated:
BrandC namespace was moved to BrandD
When I search for content tagged with a tag under namespace BrandD,

Here is the corresponding XPath query generated:

Also, another interesting point to note is, Lets say I am moving Namespace A to NamespaceB and there is no content tagged with NamespaceA or the tags under it, then Namespace A would just be deleted and NamespaceB would be created. There is no cq:movedTo or cq:backlinks property set in this case.
Hope this helps!