MPLS is a virtual "layer 3" network. The customer addresses packets by IP. The PE equipment have customer IPs and serve as customer routers. The MPLS admin needs to manage at least a little of the routing (unless there have been improvements since I last administered an MPLS network, I'd be interested to know if that is the case).
VPLS is a virtual "layer 2" network. The customer addresses packets by MAC. From the customer's point of view, the PE equipment behaves like a switch.
As for efficiency, both have their pros and cons.
EDIT: this was going to be a comment on @peter-green's answer but it got too long:
To elaborate on the router that needs to know both the customer's and the provider's networking: there are usually many of them, one at each point of entry from the customer network into the provider network. They are called PE routers (Provider Edge). Of course, one PE router can handle many entry points, for many clients. You could have one PE in, say, every US State capital, and each customer could have several offices in each city, all connected to that city's PE.
The MPLS PE will need to be configured with the IP addresses of the customers connected to it, at least the IPs connected directly. For the adresses on each customer site, it can either take a static route (which needs the provider to act for each site modification) or it can talk some routing protocol with the CPE (Customer Premise Equipment), which is a lot more complicated but which can let the client play with his on-site IPs without bothering the provider. The PE will learn the customer IPs connected to the other PE routers by talking MP-BGP with them.
The VPLS PE will need to know the customer's MAC addresses, but it will auto-detect them. If there are many MACs this could be a problem. As @peter-green notes, this also has a downside with Ethernet broadcasts in addition to the encapsulation overhead, but it has the upside of the provider not having to configure the customer IP addresses.
If this hasn't answered your questions, you'll have to specify more :)