Choose a candidate key that is guaranteed to have a valid, non-null value for each entity instance. Consider using artificial, single attribute primary keys over large, complex, composite keys.
Specialization is the reverse.
In practice the distinction is somewhat moot. Basically we're describing the concept that some entity types are subtypes of other, more general entity types. We use supertypes and subtypes to model these relationships. A supertype is a generic entity type that is subdivided into subtypes. A subtype is a subset of a supertype that shares common attributes or relationships distinct from other subsets.