The loop you have now has the exact same problem that using AddRange() has. It is modifying the Items collection as the item is moved from one CMS to another. That bombs your code when the index becomes invalid.
One safe way to do this is by iterating the Items list backwards so the changes to the collection doesn't make the index invalid. Like this:
For ix = ContextMenuStrip1.Items.Count - 1 To 0 Step -1
ContextMenuStrip2.Items.Insert(0, ContextMenuStrip1.Items(ix))
Next
If you want to use AddRange then you need to make a copy of the Items collection so that moving the items doesn't invalidate the source. You can use Linq for that, like this, spelled out for clarity:
Dim items = ContextMenuStrip1.Items.OfType(Of ToolStripItem).ToArray()
ContextMenuStrip2.Items.AddRange(items)