I suppose i would have a Variable like "Alignment" with 1 being Up/down, and 2 being Left/Right. Cars with Value=1 could only move on the grid up and down, and =2 would only be left-right. You could probably use offset or checking nearest grid area as far as placement goes.
There are tutorials for grid movement floating around the forums, which would be a good place to go for actual grid movement.
As for collisions, I would try to have some sort of event set up that checks
A) the alignment of your car
B) whether or not there is a car immediately a square above or ahead of you
and if the condition is true, disable the car from moving in that direction.
Or alternatively, you can have the car be able to move IF and ONLY IF there is not car on the grid square directly in front of it.
This might over-complicate things in terms of numbers, but you can even have each grid-square be its own sprite, and have a switch 1, or 0. If a car overlaps said grid, then you can have it so that cars cannot go onto any grid square that has been switched on (that is, it has another car on that spot).
Just some thoughts.