Best practice for moving actors with others?

The best way I know is to have everything as child actors. Have you looked in to Blueprint Communication and Event Dispatchers?
Blueprint Communication Live Training: (Excellent) Blueprint Communications | Live Training | Unreal Engine - YouTube

I would also look into learning how to use Actor Components: Using BP Components for Game Behaviour | Live Training | Unreal Engine - YouTube

Can you give some more details of these components and their interactions? Is this a First Person view inside ship? Third Person view of ship? What type of gameplay?

You should be able to set public variables on child actors, you just need to do it through blueprint communication, I have a Thrust_Flame blueprint and multiple copies of this as child actors, and when I need to update the size/color etc. of the flame, I use an Event Dispatcher on the main Ship Blueprint. The Thrust_Flame Blueprint binds to the Event Dispatcher on the main Ship Blueprint. Then, my Movement Actor Component (Custom, not the Unreal built in Movement Component) calculates the thrust vector, calls the Event Dispatcher on the main Ship Blueprint passing along the Thrust Vector, then the Thrust_Flame Blueprint sets it’s variables accordingly. Now that I say this, I guess it is not really one blueprint setting a public variable, as the child actor is receiving a message and setting it’s own variable.

I believe to set a public variable, you would have to get a reference to the actual actor in the World Outliner, and the difficult part would be getting that reference from another blueprint to set that variable.

Otherwise, to attach an actor to another actor, in the World Outliner, just drag and drop the actor over top another actor and it should say “Attach…”

294628-world-outliner.jpg

You can attach actor at runtime via blueprints as well:

294629-attachactornode.jpg

Hope this helps.