That is a long list of broad questions. Some of the answers depend heavily on application and personal preference. Assuming you're not using ROS2, then you might consider looking at the ros_control package. Not necessarily to use - just read through their architecture and tutorials for now. It will at least help give you an idea of where to start.
As for the specifics:
In general your control loop should be running at a fixed rate (e.g. 50 Hz), so your control function should be running independently of your sensor callbacks.
It depends, what is your sensor data and where is it coming from? In your control node, you sensor subscribers could just provide your control loop with the most up to date data possible.
This also depends on the application. Obviously if your sensor data is coming in at 10 Hz you probably don't need a 2000 Hz control loop.
Maybe look at the message_filters package. It sounds like it'll answer some of your questions, too.
Depends on your data. But you probably want your controller function to handle combining all of your sensor input and processing it at the controller's loop rate.
Do you mean the queue sizes? It gives flexibility into the timing of processing published messages. For your sensor data your probably only care about the latest available reading, and your callback should probably never fall behind on processing messages from the queue. But say you had a sensor that produce a huge burst of information in a short amount of time, then with a sufficient queue size all of those messages could be published and processed without losing any of the data.
Hope that helps. I think the ros_control stuff might be a good place for you start.