MAC addresses are assigned with a vendor identification (OUI) and an identification which is unique to the vendor. There is no order to this in a particular LAN since you will have devices from multiple vendors, and even devices from the same vendor will not be in order.
The IEEE assigns OUIs and defines how the LAN works. This only goes as far as the layer-2 boundaries. Layer-2 needs broadcasts to operate, and each and every broadcast must interrupt and be processed by each and every host on the LAN. This can get out of hand very quickly, placing a practical limit on the size of a layer-2 network. Imagine having you PC pounded by broadcasts from every host on the Internet; it couldn't keep up.
There are also multiple types of LANs which are not directly interoperable. For instance, Wi-Fi (IEEE 802.11) can't directly communicate with ethernet (IEEE 802.3). You would need a translation bridge at layer-2 like used to be used between token ring and ethernet, or you move up the stack to layer-3.
This is where layer-3 steps in. Layer-3 is independent of the layer-2 protocol used by the hosts. It has its own addressing which is independent of the layer-2 addressing. Layer-3 addressing is hierarchical, allowing segmentation of layer-2 LANs so that broadcasts and other communications can be isolated.
If that's not enough addresses for you, layer-4 can have its own addresses, too. For instance, TCP and UDP use addresses which are called ports. Upper layers can have addresses, too, but there is no real standardization for those; the application designer can create any addressing desired for an application.
Hosts are unaware of the layer-2 address of other hosts. They need some sort of layer-2 protocol to help with that, and many were developed over the years, but the limitations of layer-2 didn't allow layer-2-only networking to scale to the size of today's networks.
When a host wants to talk to another host at layer-3 (I will assume IP as the layer-3 protocol for this, but the concept applies to any layer-3 protocol), it must determine if the other host is on its own LAN. It can do this by masking the destination address with its mask and comparing it to its own network. If the destination host is not on its LAN it will need to send the traffic to its configured gateway which will be on its LAN. At this point, the host needs to discover the MAC address on it LAN, either the destination host or gateway. To do this, it uses ARP. ARP sends a broadcast asking, "To whom does this layer-3 address belong?" The destination host or gateway will respond with its MAC address, and the sending host will use that to create the frame and send the traffic. The sending host will also cache the layer-3 to layer-2 resolution for a period of time so that if there is more traffic destined for that layer-3 address, it already has that information.
If the layer-2 destination is the gateway, the gateway will get the frame and strip it off, leaving the layer-3 packet. The router will then determine where to send the packet next, and it will create a new layer-2 frame for the new layer-2 segment over which the packet must travel.