So for the purposes of mapping the linked answer to identity:
IdentityUser is the local user (UserId is the key for local user) IdentityUserLogin is the row linking the local user to a third party login (oauth/open id) ExternalLoginData is just a container class that is used by the app layer.
Typically registration happens either locally (Create a username/password) or externally (link a new account to a 3rd party login).
Both of these flows first create a IdentityUser. No IdentityUserLogin is needed for the local password flow, since the password hash is stored inside of the IdentityUser itself. The 3rd party flow will need an extra step creating a IdentityUserLogin with the appropriate 3rd party identifier associated with the IdentityUser's userId so future logins with the 3rd party login work.