Explicit join is opposite of implicit join. Explicit join exists between tables which don’t have direct relationship. So the join has to be defined explicitly. It is important to recall that join is defined between tables to create 1:1 relationship. Examples of this type of join are between tables S_CONTACT and S_ADDR_PER where a contact can have only one primary address. The join definition is S_CONTACT. PR_PER_ADDR_ID = S_ADDR_PER.ROW_ID.
Similarly explicit join exists between tables S_ORG_EXT and S_CONTACT where one Account can have only one primary contact. So the join definition is S_ORG_EXT.PR_CONT_ID = S_CONTACT.PAR_ROW_ID.
Explicit join is defined in Siebel Tools under BC object. For the above example of "Contact" BC, we have a join named S_ADDR_PER and the join specification defines the source field (S_CONTACT .PR_PER_ADDR_ID) and destination field (S_ADDR_PER.ROW_ID). Remember that for implicit join we don’t find this type of definition.
Similarly for Account BC example above, we have a join named "S_CONTACT_PRIMARY" and the join specification defines the source field (S_ORG_EXT.PR_CONT_ID) and the destination field (S_CONTACT.PAR_ROW_ID).
To summarize, explicit join is defined explicitly in Siebel Tools, whereas for implicit join definition don’t exist.