It can be tricky to offset bullet and effect locations when rotating sprites, at least when your not looking for a direct mid point that is.
The newx and newyvalue commands can help a great deal - I would do 2 passes to get the location after an X and Y offets.
Say for example your enemy is an X-wing figher with 2 lazers at each side on the wing, calculating this bullet spawn position can be very tricky. So, if you take Xoff and Yoff as offset variables, working out the offsets you want on an non-rotated sprite is the first step. If the gun turrets on your X-wing are at 32 on X from the centre and 16 on Y from the centre, then you can work the resulting location like this, assuming ang# is the rotation angle of your X wing:
XP#=newxvalue(XP#,ang#,Yoff#)
YP#=newyvalue(YP#,ang#,Yoff#)
XP#=newxvalue(XP#,ang#+90.0,Xoff#)
YP#=newyvalue(YP#,ang#+90.0,Xoff#)
See it uses a double pass of new value, so that it works out the Y offset position first, then the X offset position, which is a case of working out the position at a 90 degree angle on the current rotation.
So if you keep note of the bullet start locations (hot spots these are often referred to) in your art package, you just need to feed these offsets in, with the sprite centre being taken into account of course.
Just thought I'd post that in case you do need to work out rotated stuff like that. The code there is untested but probably quite close to what you'd expect it to do.