Is it possible to re-mesh, downsample & upsample a DiscretizeRegion object?
I believe the answer to all of those questions is yes, but just the body of the mesh and not the boundary – with a caveat which is described towards the end of this post.
First, let's deal with the question of re-meshing the body of the mesh.
bmesh = ToBoundaryMesh[MR]; ToElementMesh[bmesh, MaxCellMeasure -> Infinity, MeshQualityGoal -> "Minimal"] (* Out: ElementMesh[{{-1.22416, 1.22416}, {-1.06605, 1.2848}, {-1.03294, 1.03294}}, {TetrahedronElement["<" 7292 ">"]}] *) In this example, we discarded the discretization of the body of the mesh and then re-meshed it using the boundary. This results in a considerablyconsiderable downsampling compared to the original mesh:
emesh = ToElementMesh[MR] (* Out: ElementMesh[{{-1.22416, 1.22416}, {-1.06605, 1.2848}, {-1.03294, 1.03294}}, {TetrahedronElement["<" 13449 ">"]}] *) i.e. the re-meshed mesh has 7292 elements and the original mesh has 13449 elements. Similarly, we can also upsample it in this way:
bmesh = ToBoundaryMesh[MR]; ToElementMesh[bmesh, MaxCellMeasure -> 0.0001] (* Out: ElementMesh[{{-1.22416, 1.22416}, {-1.06605, 1.2848}, {-1.03294, 1.03294}}, {TetrahedronElement["<" 98265 ">"]}] *) This re-meshed mesh has 98265 elements.
Re-meshing the boundary is not possible without a symbolic representation. This is probably for a good reason. If you discretize the boundary (i.e. the surface in the 3D case) then you know what's happening at those points, but you don't know what's happening in between those points. Adding more points in between without knowing what those points are supposed to be is not going to make your result more exact. Allowing users to do it might trick them (us) into believing that they (we) are creating a better mesh, when in fact the new mesh is no better than the original at all.
This is how you can add a symbolic description to a mesh:
bmesh = ToBoundaryMesh[MR]; nr = ToNumericalRegion[IR]; SetNumericalRegionElementMesh[nr, bmesh]; bmesh = ToElementMesh[nr, MaxCellMeasure -> 0.00001]; Length@Flatten[ElementIncidents[bmesh["BoundaryElements"]], 1] (* Out: 16782 *) Compare with the number of boundary elements in the original mesh:
bmesh = ToBoundaryMesh[MR, MaxCellMeasure -> Infinity]; Length@Flatten[ElementIncidents[bmesh["BoundaryElements"]], 1] (* Out: 4446 *) This is an example of an upsampling. In other words, it is possible to re-mesh, upsample, and downsample the mesh if you can provide a symbolic description which will guide ToElementMesh to selecting the additional points.
As for your question about performing boolean operations on discretized regions, the answer is a no. That code is for symbolic regions.
Finally, note that the wireframes in your question show the boundary elements only. It is better to count the number of elements to get an idea of how well upsampling/downsampling works.