I also saw that joints constructors accepts null as entityA or entityB parameters, what's the reason for that and what we get?
Passing in null as a connection connects to a special 'world entity,' which is actually just a kinematic sphere sitting at (0,0,0) but not added to the space. The actual entity instance is located in the TwoEntityConstraint.WorldEntity field. You can do something similar manually by connecting the joint to an unmoving kinematic entity.
Using this 'world entity' requires some care, though. You have to be aware of the constraint's organization; a basis of some kind is usually attached to connection A and some kind of measurer is attached to connection B. Because of this, the behavior of the constraint can change depending on which connection is null. Also, the default position at (0,0,0) can result in some very long lever arms which can cause stability issues with some configurations.
I also would like to know how bepu creates mobileMesh from model. Does it make a convex hull out of it (I saw this in some other physics engines) or does it simplify it a bit?
The mobile mesh does not perform any simplification; it assumes all content processing has been performed beforehand. The MobileMesh triangles are exactly the triangles passed into the constructor. It is not a convex hull; it will perform true triangle-level collision detection.
Because of this, MobileMeshes are generally slower than simpler representations. Using a ConvexHullShape instead of a MobileMeshShape is a common way to save some time if the concavity of the shape doesn't really matter. Simplifying the source model helps too in any case.
If the concavity is important, you can get better performance than the MobileMeshShape by approximating the shape with a set of simpler primitives and putting them together in a CompoundShape. Creating a CompoundShape of multiple ConvexHullShapes is common; you could use a convex decomposition algorithm to do this automatically in the content build tools (there is not a convex decomposition algorithm available in the engine at the moment). An even simpler represention could be a set of boxes, spheres, and other very simple primitives bundled together in a CompoundShape which approximate the concavity.