The objects origin is the (0, 0, 0) point of it's data. No matter what object location, rotation or scale is. An object, the default cube for instance, has one origin, it's location is arbitrary. We could put the cursor anywhere and change the origin to that point, using transform > origin to cursor, and for all extents and purposes the cube's mesh doesn't move. What does change tho is the local data (the vertex coordinates) and the object location to match.
The default cube has a vertex with coordinate (-1, -1, -1). If we make the origin point at that vertex' location, the vertex will now have the coordinate, yep you guessed it, (0, 0, 0). The cube will now have a location of (-1, -1, -1) instead of zero... looks like it hasn't moved, only the little orange dot specifying its origin moved. Local coordinates is a fundamental of 3D.
Now how does this apply to your car model. You want to have an origin where x=0 is in the middle of your car from the front. This will enable you to use mirror effectively.
One way to do this:
Select the tail lights (or the windscreen or something that's centre is the centre of vehicle), go into edit mode, select all verts. Snap shift-s cursor to selection. Look in the 3D cursor panel. It's the x offset that has put your model out of whack.
Get out of edit mode. With just the lights selected, set origin to cursor at this point will put it right in the middle shown in image above, but onlyh for the tail lights.
Or at this point to change origin of all car parts to a centre:
Keep the 3D cursor's X location value and change the Z and Y values to suit, 0 is good. Now select every object that makes up your car. Object > Transform > origin to 3D cursor.
Another tip at this point would be to add an empty at cursor location. Make it the parent of all the car parts. This way moving the empty will move the car as one.