Andrew,
As Mactec54 alluded to, you need to home the machine and then position the table so that the spindle center is on the X0Y0 of the part (as programmed). At this point, you would set the G54 X and Y values. Now hopefully, the part is fixtured such that there is sufficient travel in all directions so that all the hole centers can be reached without going into overtravel.
You should not need to invoke G52 to solve this problem, IMO. G52 is more for usage within a subroutine, to shift a pattern programmed in absolute, repeatedly with respect to a given workshift datum (G54 or G55, etc X0Y0)
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)