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..
If they want their Inbox (boring stuff that they have to deal with) separate from the fun stuff (social media, friends from emails) so that can deal with the boring stuff with a constant blue bracketed reminder of how much fun stuff they can look at when they finish then labels are great.

Just get their friends to send emails to send email to user+Fun@gmail.com and suddenly they'll have a useful labelling system that should make sense straight away.

A major problem with user adoption of organisational techniques is they view everything as either wheat or chuff. Finding a way to show the difference to them that applies normally helps.