I can't understand what is the difference between these types of networks.
When I reed about it:
http://docs.openstack.org/mitaka/install-guide-rdo/neutron-controller-install.html
I just see that self-service network it is provider network but better because it also provides layer-3 services. If it the difference is only in this then why/when we need provider network?
Explaining a little bit from the last answer:
Provider-networks are normally tied to your already-existent switching architecture, and can be used as "external-network" for OpenStack. The FIP's (floating IP's) are taken from that "external network". Normally, FLAT or VLAN based networks are used for provider-networks.
The self-service are, like the answer above, created internally by the tenant/project. Those self-service are tunneled type networks (using both gre and/or vxlan), and "tied" in a SNAT/DNAT scheme to external networks (provider-type) using a OpenStack router.
The OpenStack router has a "leg" attached to the external network, and another leg into the self-service, internal network.
Then, depending of your environment and OpenStack release (specially from Kilo to Mitaka) you can have multiple external networks, and combine different types of tunneled self-service ones (vxlan or gre). As a matter of facts, you can both assign FIP to your instances, or directly assign IP's from the provider-type net's (permissions provided of course) to your instances.
Hope this clarifies a little more about the topic.