So upon further investigation it appears its related to the difference in parallax between layers and needing to dive into using LayerToCanvas
Here's an example tutorial / capx that really helped me understand it better.
I dont know if its the easiest/cleanest solution but heres one workaround for my setup.
Create a dummy object on the 0,0 parallax layer and position it overtop of the target using the code from the example. eg:
set dummy target position = CanvasToLayerX("UI",LayerToCanvasX("level", Player.x, Player.y) ,LayerToCanvasY("level", Player.x, Player.y))
this creates an object for the turret to aim and shoot at on the same layer as itself, but it follows the position of the object on the layer below.
again, if anyone knows an easier or cleaner way around this, please let me know.