What are the differences between the functions contactStarted(), contactPersisted() and contactEnded() and when should one be used?
The contactStarted() gets called at the step when the bodies start a collision.
The contactPersisted() gets called at each step the bodies continue in contact.
The contactEnded() gets called at the step the bodies lose contact.
Well, the when should they be used depends on the task. But for example if you want to launch a sound when two bodies collide, you would do that in contactStarted().
In class FContactResult, when getNormalImpulse() and getTangentImpulse() are used, what is exactly the unit of the returned float values (or any metric/scale relationship to anything, say, the setScale method)? For instance, if a collision returns a float value of 40.0, how do we make sense of that scale of magnitude?
I have updated the documentation in the git repository of fisica.
Basically the units are those of an impulse (units of a force multiplied by time). Since in Fisica the length units are in pixels, this should be (kg * pixels / s) however I am not sure. I'm simply wrapping around jBox2d here and haven't tested it.
But you must keep in mind that Fisica wraps the old jbox2d and many things have changed in this area since. The branch of Fisica for the new jbox2d is not yet finished and this is one of the things that remain to be done.