Check http://www.objectsource.com/j2eechapters/Ch21-ClassLoaders_and_J2EE.htm for classloader info (the Customer mismatch)
Since EJB 3.1 you can have EJB:s without interfaces, packed in a single WAR (yiiihaa)
CDI injections should have the same visibility scopes as the EAR in general (check first link for visibility)
Maven "provided" is a packaging term that means that the artifact is already provided at runtime (usually by the AS libs). If you write a module of your own, you generally don't use provided since it's not going to appears in the server magically. Maven takes care that the final product is built in the correct order (modules first).