Attention: Answers.ros.org is deprecated as of August the 11th, 2023. Please visit robotics.stackexchange.com to ask a new question. This site will remain online in read-only mode during the transition and into the foreseeable future. Selected questions and answers have been migrated, and redirects have been put in place to direct users to the corresponding questions on Robotics Stack Exchange. Additional details are available here.
Using a class is a convenient way of encapsulating the code and of having persistent storage across callback invocations. Generally, subscriptions are set up in the constructor for the class. The callbacks are triggered by incoming messages, so no explicit calls to them have to be made.
ros::spin() gives control over to ROS, and waits until the node shuts down.
Callbacks are one of the main design elements of ROS code. This is the only way to respond to messages coming in on topics.
Yes, although you will need to subscribe to a topic for each of the callbacks you want to be active.