What is the main difference between OID and FID in Esri software?
OBJECTID, OID and FID refer to an unique identifier of an object within a table. FID is the name primarily used in shapefiles (OID for plain DBF tables), and OBJECTID is at home in geodatabases (for both object classes and feature classes).
They mean the same thing except that FID applies only to feature classes while OID (object ID) applies to object classes, which includes feature classes and tables.
You can get both in one dataset by using tools that export/import/re-create (a process that creates a new one) your files.
You will notice an asterisk * next to one of them (usually first in attribute list) when viewing in the attribute table. The other can be deleted (unless you use it for something else).
There is only ever one internal ID field in use on any feature table.
Here are some Help 10 links.
This question is answered concisely by ESRI on this page:
I understand that the terms "FID" and "OID" are entangled in that the value returned by: arcpy.Describe(layer).FIDset is a semicolon-separated list of values in the layer's OID field for the currently selected rows in that layer. The name of the field that is that layer's OID field (i.e. the field that contains the values in the FIDset) is obtained by: arcpy.Describe(layer).OIDFieldName