Your program (plug-in or framework app) only has the rights the user you've logged into the SDK has.
Is it possible that you are changing the contacts to private or managed by another user when you change the email address? And then no longer being able to see the contact you've changed with the user you're currently logged in as?
I think you get past this hurdle you'll have a stronger grasp on the object model of the SDK. Once you wrap your head around it, it really starts to 'click'.