Hello - generally the best way to check on Booleans is to switch to wireframe and run the Intersect command on the two objects, then inspect the resulting curves, if any. Typically, Boolean operations will fail even if the visible intersection appears complete if the intersection is exactly along brep face edges and if non planar surfaces are coincident or come tangent to one another, and that seems to be true for both in your file. The way to clean up by hand in Rhino - I have not looked at all of the objects yet - is to extract and join the surfaces you want to have in included.
I think the weird-looking surface in screenshot #2 was just an artefact caused by overlapping objects…
However, it appears that the subtracting objects from screenshot 3 had coincident surfaces with the object from which they were being subtracted, and removing the coincidence has made it all a lot faster…
However, even if I try to subtract the array or even a single brep from the surface of rotation, the surface of rotation is unchanged. Analysing the surfaces shows that they all have the correct directionality.
What would make this subtraction fail in this manner?
Also, on the back side (to the right in the picture) of the ring, you have a very short area (0.014 units) where the section is horizontal in the otherwise sloping surface. This seems to be meant to coincide with an equally short part on the green part.
While the intersector seems to find an intersection curve here, this kind of modeling is asking for problems. Try to make clean shapes that cut through each other.