How are vertex indices determined?
How does the program decide what indices to assign to vertices?



new vertexes are appended to the end of the vertex list
duplicating vertexes adds them also to the end and their order is maintained
.. list too long..


It would be very time consuming to analyze every mesh operation/modifier and how it handles vertex indices and make a list for you (it will be like the above though in most cases if not in all). Instead you can reverse engineer this yourself:

Type bpy.app.debug = True into the Python Console

This will enable super top secret mode with next option available in Properties panel:



Now you can see the indices and how they change for what you are interested in:




  Can anything be done to control which get re-assigned?


Nope, blender handles it internally.


  Are there any ways to recalculate, re-assign, or copy vertex indices?


Sure, with python you can do anything to meshes, you can reorder the vertices. Just by building a new mesh with different vertex order from old one and then switching them.