Your understanding is correct. In general, the GEOMETRY tag is used as an alias for the field containing the working geometry of the GeoEvent. This helps when you have several types of GeoEvents coming into a processor, and the processor doesn't know what the name of the geometry field is going to be.
The other reason that it is necessary to use a GEOMETRY tag is to deal with situations where there are multiple geometry fields in a single GeoEvent. Processors need to know which geometry to use when doing spatial operations.
The issue you mentioned where the field value is being written differently sounds like it is a problem with the Text Adapter. It seems to be formatting the data differently depending on if it is tagged or not. That shouldn't be happening without user intervention.
TRACK_ID is even more critical because there are several processors and outputs that need to know how to group GeoEvents so that they know which GeoEvents to group together into the history of a single entity.
TIME_START is used to know which time value to use when doing temporal calculations. There can be (and often are) multiple timestamps on a single GeoEvent. It is used by several built-in processors and output connectors.
TIME_END represents that the GeoEvent is expected to stop being fresh. After this point the GeoEvent is said to be "stale" information and should be considered "historical", not "current". This is not used in any of the processors packaged with the 10.2 release of GeoEvent Processor, but is expected to be used in the near future.