Question: As a computer programmer I have no problem understanding labels/tags. 

However I find it very hard to make people understand that an email can have more than one label.

Also I find it hard to explain that you can still get to an email if it is not in your inbox and does not have a label.

(Moving a email to a folder seem to be how most people think)

Is gmail just designed by computer programmers for computer programmers? (Hence why I like it so match)

Answer: 
Just tell them that every e-mail is like a movie. The same movie can belong to more than one categories/genres like `comedy`, `action`, `adventure`, etc..
I think the label model/analogy is a good one.

Think of a real life label maker. You can put one or more labels on any physical object. 

Well gmail allows you to do the same, virtually. And then you can pull up all of the emails by a certain label name. 

This analogy shows that there is 1 email, and you can apply 1 or more label to that one email. There is not a copy of the email for each label. 

Labels are nicer than email folders in my opinion because you can have them in 2 places without needing a copy.