For point 1 look for arcball rotation.

With arcball rotation a virtual sphere is placed around the object. If you click in the window, the vector from the center of the sphere towards the surface of the sphere where you clicked with your mouse is calculated. While dragging with your mouse a second vector from the center to the surface (new location of the mouse) is calculated. With these two vectors you can calculate a normal vector, this is the vector around which you are rotating. The angle is the angle between the two vectors. Search google for more details of implementation.

Point 2: just apply a transformation when you are rotating the scrollwheel.

If you are unsure how to get input, have a look at SDL for example. Or glut will do the job as well.