You can drag and drop a glyph selection to change the order. The drag starts after 0.4 of a sec, to prevent accidentally reordering of glyphs.
You can also set a glyph order with a script:
font = CurrentFont()
# this is a list of glyph names
font.glyphOrder = ["a", "agrave", "b", "c"]
if you changed the glyph order (manually or script) the sorting is disabled.
There is no glyph index in the UFO data, but each glyph has an glyph.index returning the index related to the glyph order. Please take note that the glyph order in the final font can be different if you don't added .notdef or enabled "Use MacRoman as the start of the glyph order" while compiling.
Adding or removing glyphs will always alter the glyph order. It is depending on your settings where new glyphs would be added (at the end or somewhere in a sorted position)
Good luck