Whenever there are some routes, which cross, a crossing is required. For maximizing the traffic performance, the correct crossing is mandatory. Otherways, you might get a gridlock. Crossing are only neccessary for road and rail vehicles. Ships and planes have usally very much space, and do seldom have crossing problems. It is possible to make separate exclusive routes for vehicles, with no crossings, but if you want to use the real-world look and feel, you use crossings. They have much advantages, and very few disadvantages. A crossing overloaded by traffic jams can lead to a total gridlock, which affects many interconnected routes at big networks.
Simple crossing are quickly and easily built. You only need two roads which cross (for the road network), or two rails (for the rail network), or even mixed ones (road and rail). Such a crossing is easy to build, but makes only a very low traffic flow possible. When the transport network grows, the traffic on such a simple crossing grows to, until it gets to crowded. Then it is a gridlock, and the problem must be solved, to guarantee further traffic flow.
Advanced crossing concepts become necessary, once you have a crossing which is passed by many convois. The traffic generated at the particular crossing becomes so heavy, that it might slowdown and even stop any traffic. While advanced crossings are slight expensive than simple crossing, the benefit of them is a better traffic flow, which in turn generates revenue and pays quicker back, than a simple overcrowded crossing. Advanced crossings are built either by simple placing a semaphore on a simple crossing, or in any combination of the elements : semaphore, tunnel, bridge, one way road.