mpls.0 contains MPLS labels, and the action a router should take when receiving MPLS packets,
inet.3 contains IP routes, installed by RSVP and LDP. These routes are routes for the address of the egress node on an LSP.
As an example, let's say you configure an LSP on PE1 with egress address 192.168.2.2, as shown:
NOTES: no VPNs are implemented, and ISIS is the IGP.
As you can see, RSVP signaled the LSP from PE1 to PE2, and on PE1 a route was installed in inet.3 for the LSP's egress address (192.168.2.2), with next-hop 10.1.1.2 (the P router), AND using LSP1 (which means pushing label 300576). The P router installed a label in mpls.0 that indicates that when receiving an MPLS packet with a label of 300576, the action will be: pop the label, and forward the packet to 10.2.2.2 (PE2). Basically, the ingress node uses inet.3, and the P router uses mpls.0. However, inet.3 is NOT used for packet forwarding, so how is it used?
Let's say now that PE2 is receiving a BGP route for 20.1.1.24 from CE2, and is advertising the route to PE1 using IBGP (changing the next-hop to its own address 192.168.2.2). When PE1 receives the route, is has to resolve the BGP next hop to a physical next-hop.
As you can see in the diagram, BGP have access to both inet.0 and inet.3 for next-hop resolution. It will chose the route in inet.3 because it has a better preference. As a result, BGP installs a route for 20.1.1/24 in inet.0 for 20.1.1/24, with a next-hop of 10.1.1.2 (the P router), AND using LSP1 (which means push label 300576).
When PE1 receives IP packets going to 20.2.2/24, the route in inet.0 is used. So, PE1 pushes a label of 300576 and send the packet to the P router. The P router checks mpls.0 and find label 300576 so it pops the label and forwards the IP packet to PE2 (with no label). PE2 checks inet.0 and sends the packet to CE2.
HTH,