Hi Ron,
I would have to test under what conditions the marketo id gets returned with the syncLead call.
Whether you use syncLead or getLead depends on what your intent is - to create/update a record or just to find out its field values.
syncLead will create or update a lead where as getLead returns its field values.
The Email field is what you could call "semi-unique". If you are using it as the identifying key (as opposed to the Marketo ID, a foreign system ID, or the munhckin cookie), it will check to see if there is an existing record with that value for Email, and create a new record if there isn't one. It's not a unique identifier in the sense that it's possible for there to be different records in Marketo which have the same email address. If there are duplicate records, I believe it updates whichever one was updated most recently.