You can use external ids to relate records that you are loading with the parent (i.e. records that they look up to - both Master Detail and Lookup)
Accounts and Contacts is a great example. If you have Accounts loaded in, and they have an External Id Field say External_Id__c, then you can use this field to relate the Contacts you are loading to the Accounts already loaded.
This saves you the trouble of extracting AccountIds and editing your CSV to add them in.
External Ids let you match based on an 'External Id', typically finds uses when you're migrating data from a legacy / external system into salesforce. (Look at it like a Foreign Key or a relationship being imported from an External System)
If you pick the External Id field to relate to parent in this case, it will add a special kind of mapping, which you can see if you save the mapping to a (.sdl) file.
eg in the Account - Contact example, it will read
AccountId = Account\:External_Id__c
What this is saying is populate the Account lookup on the Contact I'm loading by looking up on the External_Id__c field on Account.
You can also use External Ids in Apex
//create an in memory account with the external id set
Account acc = new Account(External_Id__c = 'ABC12345');
//set the account instance on the contact to look up via the external id
Contact con = new Contact(Name = 'Smith', Account = acc);
//use upsert to match on external id
External Id field does not have FLS for System Administrator profile, That's why it was unable to see this field.
Background of the issue: Through the change set this field has been migrated to other sandbox. Normally Profiles have not been added in the change set.
So, field have migrated properly but, FLS was not available since we have not added respective profiles.
After migration, manually FLS supposed to be given (even if to the System Admin profile), which has been missed.