Treat the Box2d world completely independently to the display - so model your table and balls in Box2d using whatever units of measure you choose (it’s designed to use meters from memory, so probably stick to that).
So, you have a B2 model working - but displaying nothing (because Box2d is physics engine - and the only display available is the debug display - which is fine for its purpose (debugging!)
Now you decide how you are going to display the pretty graphics for your users on all the different devices.
Assuming you’re talking a top-down 2d implementation, then your factor is relatively simple.
say your table is 2 meters long.
say your screen is 1024 pixels wide
then the ratio is 512 - i.e. each meter is 512 pixels.
So if your ball Box2d object is 5cm it should be drawn as 25.6 pixel diameter.
If your sprite was created as 32 pixels, you need to scale everything by 25.6 / 32 = 0.8.
Assuming you create all of your sprites at the same scale, then you can just scale your screen at 0.8 and all will be well.