Nein, sie stellen allgemein Kreuzungen dar, sind aber nicht erforderlich und daher längst nicht an jeder Kreuzung getaggt. Wenn z.B. eine Straßenkreuzung einen Namen hat, dann wird junction=yes als physisches Tag zusätzlich zum name=* getaggt, damit klar wird, das es die Kreuzung ist, die den Namen trägt. Kleine Kreuzungen auf englischen Landstraßen haben oft Namen, die sogar auf Wegweisern stehen können.
Große Kreisel (Insel nicht überfahrbar) werden in OSM als Way erfasst, mit junction=roundabout. Kreisverkehre gelten also in OSM (IMHO sinnvollerweise) als spezielle Bauform einer Kreuzung. Es gibt noch andere, siehe key:junction im Wiki.
Minikreisel (Insel überfahrbar) sind Punkte mit highway=mini_roundabout (weiß der Kuckuck, wieso nicht junction=mini_roundabout).
Nö. Das ist ein Fußgänger- oder Radfahrerüberweg.
Kreuzungsverbundene Wege haben immer einen gemeinsamen Node (also Punkt). Höhenfrei kreuzende Wege dürfen keinen gemeinsamen Node haben.
Dein Ansatz sollte sein: alle Nodes raussuchen, die eine Kreuzung darstellen. Ein solcher Node gehört auch bei einer simplen X-Kreuzung je nach Laune des Mappers oder örtlichen Gegebenheiten zu zwei bis vier Ways:
2 2 2
| | |
-1----o-----1- -1----o----1- -1----o----3-
| | |
2 3 4
Als nächstes musst du für jeden Fall die Ways analysieren. Gehört der Node zu drei oder mehr Ways mit highway=(primary bis unclassified), dann ist es mit Sicherheit eine Kreuzung/Abzweigung – kann aber auch nur eine Aufspaltung eines Straßen-Ways in zwei Einzel-Ways sein (bauliche Trennung). Gehört er nur zu zwei Ways, musst du schauen, ob er für beide ein Endpunkt ist - wenn ja, ist dort nur ein Way-Übergang in einer durchgehenden Straße, keine Kreuzung.
Dabei auch an _link denken – bei baulich aufgetrennten Kreuzungen sind die Einzelspuren oft als _link getaggt. Sind beide Fahrbahnen baulich getrennt, bekommst du 4 Nodes und 4–12 Ways für eine Kreuzung:
2 3
| |
-1----o--o-----4-
| |
-8----o--o-----5-
| |
7 6
So ganz trivial ist das jedenfalls nicht 
–ks