text() function and x, y coordinates

I am not familiar with the metafor package but the positioning of the text does seem to follow the usual logic. I suggest you start with this example:

remove the ilab, ilab.xpos, and xlim arguments and plot that. Then run

par("usr")[1:2]

That will display the x axis limits used for the plot. Then run forest() again but add in the argument xlim = c(-35,20) and see how the plot changes. Then add ilab=sub$HomePos and ilab.xpos=-20. You can repeat the plot with ilab.pos set to -16 and see how the text column moves. I think that will help clarify how the text is placed.
I do not understand how to pick the particular ilab.xpos values other than trial and error. However, I have never used the package, so I my understanding may be completely wrong.