Is it bad to run traces directly over each other on separate layers?
At high speeds "crosstalk" may become an issue. "Crosstalk" happens when one signal's electric field couples the signal over to an adjacent trace that mimics the source signal. This can interfere with the signal being passed along the second trace and create false crossings and other noise that cause the receiver to detect errant data. The best way to eliminate this is to have traces running in opposite directions (perpendicularly) on adjacent layers, or have a ground plane between each layer. These methods minimize the coupling between two signal traces. At lower speeds this generally won't be a concern though.