I will try to answer all of your questions in the order they appeared.
When you drag an item you can drop it undefined, before, after or inside another item. More about the customization of the DropPosition you can find in our help topic “Enable only drop inside” .
So, let say that you drop an item inside another item. If the target item has children (e.g. B 1.2) then the dragged item will go at the last position of this children collection. As far as I understand your scenario you need to customize this behavior and drop the item on a specific position. In this case you can use the Drop event and TreeViewDragDropOptions (an object that holds all information related to the drag, including a collections of DraggedItems). So your implementation could be something like this:
sender, Telerik.Windows.DragDrop.DragEventArgs e)
var options = DragDropPayloadManager.GetDataFromObject(e.Data, TreeViewDragDropOptions.Key)
var draggedCollection = options.DraggedItems;
As a reference you can see the OnApplicationTreeDrop event in the DragDropBetweenTreeViews example where the TreeViewDragDropOptions is also used.
If i drag entire parent B.1.2.2 the second treeview add only child that not exist.
Here you can use a similar approach and check if some of the dragged items already exist in the target item, e.g. checking the titles (B 1.2) of the items or some other property of your viewmodel, and add only the items you need.
I hope this information will help you customize the drag and drop operation per your requirements.
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.