The Manual is not clear on the difference between .mesh and .sharedMesh - other than that the latter should be read-only... What is the sharedMesh shared with?
Let's say you have a whole bunch of the same non-skinned* object on-screen. All the objects could use the same mesh. But as soon as you do anything to modify MeshFilter.mesh, on one of them, the mesh gets instanced, allowing for that object to have changes applied, while the others stay the same. This allows for you to make changes to a saved mesh, in-game, without having to save a whole bunch of similar meshes with the scene. If you make changes to MeshFilter.sharedMesh, however, every object will have the same changes applied. Each of these variables can be very handy if you're making use of prefabs.
Also, if you procedurally create your own mesh, and save it in the Assets folder, the changes you make to a "sharedMesh" will be persistent. This doesn't happen with meshes in FBX files, which will be reset at some later point, after modification. I honestly don't know the rules regarding the timing of the FBX resetting, but regardless, it's not useful unless you're in Play mode.
*For whatever reason, you can't instance a skinned mesh in this fashion.