What do you mean, refuses to stay with the ship?
Do you have a set of events like
If ShieldActive = 2
-spawn Shield at Player.X, Player.Y (or wherever you want the shield)
-set Shield.X, Shield.Y to Player.X, Player.Y
If ShieldActive = 1
-set Shield.X, Shield.Y to Player.X, Player.Y
You have to set up an event that if a certain condition is met, the shield will always be at the image point of your ship.
----This might be over-complicating things, but you can also try things like this----
Have the shield ALWAYS be with you, even from the start, and have three animations:
ShieldActive = 0
Animation name: Inactive
ShieldActive = 1
ShieldDefault
ShieldActive = 2
AcquiringShield
That way, you can have it that the events check if a certain animation is playing the asteroids will affect it:
If Shield animation ShieldDefault is playing
On collision with asteroid
-subtract x from energy
Just a thought, though.
As for your healthbar issues, I'm not sure. There are some tutorials in the classic section (under JamesX's tutorial list) that deal with health bars, if I remember correctly.