Here is an example of using Cannonjs with the DragControls which demonstrates the first part of your question about dragging an object with physics. You can bump the other spheres away with thy object you are dragging.
This is achieved In the animation loop by either updating the Threejs mesh using the Cannonjs body position and quaternion, or updating the Cannonjs body with the Threejs mesh position and quaternion if it is being dragged. I am also setting the velocity and angularVelocity to 0 for the object being dragged.
See highlighted code in the animation loop : https://codesandbox.io/s/cannonjs-with-dragcontrols-9691o?file=/src/client/client.ts:4499-5362