How to get a clean RegionDifference product

It looks like you have introduced non-manifold geometry into your model. I explain non-manifold in more detail in my answer here. Even full-featured CAD packages will fail to create non-manifold geometry, as shown here:

SolidWorks

We can try an approach using FEMAddOns as shown below. The FEM mesher will tend to create watertight and isotropic meshes.

(*Uncommented the following function if FEMAddOns not installed*)
(*ResourceFunction["FEMAddOnsInstall"][]*)
Needs["FEMAddOns`"];
bmeshann = 
  ToBoundaryMesh[regionAnnulus, MaxCellMeasure -> {"Length" -> .01}];
bmeshtri = 
  ToBoundaryMesh[RegionUnion @@ flattriangles, 
   MaxCellMeasure -> {"Length" -> .001}];
bmesh = BoundaryElementMeshDifference[bmeshann, bmeshtri];
mesh = ToElementMesh[bmesh, "MeshOrder" -> 1];
mesh["Wireframe"]
FindMeshDefects[MeshRegion[mesh]]

Tiny Faces

As you can see, FindMeshDefects finds many tiny faces on the inner ring.

We can mitigate the problem by adding a small margin to the inner radius of the annulus.

regionAnnulus = 
  ImplicitRegion[
   x^2 + y^2 <= Rout^2 && x^2 + y^2 >= (1.005 Rin)^2, {x, y}];
bmeshann = 
  ToBoundaryMesh[regionAnnulus, MaxCellMeasure -> {"Length" -> .1}];
bmeshtri = 
  ToBoundaryMesh[RegionUnion @@ flattriangles, 
   MaxCellMeasure -> {"Length" -> .01}];
bmesh = BoundaryElementMeshDifference[bmeshann, bmeshtri];
mesh = ToElementMesh[bmesh, "MeshOrder" -> 1];
mesh["Wireframe"]
FindMeshDefects[MeshRegion[mesh]]

Inner radius margin

By adding the margin to the inner radius, we have eliminated errors detected by FindMeshDefects.

Conversion to a 3D object using RegionProduct

If there is a desire to extrude the 2D mesh into a 3D object, one could use RegionProduct to accomplish this task as shown in the following workflow:

(*Tensor product mesh from:https://wolfram.com/xid/0rs5ccudm-eqv31q*)
pointsToMesh[data_] := 
  MeshRegion[Transpose[{data}], 
   Line@Table[{i, i + 1}, {i, Length[data] - 1}]];
rv = pointsToMesh[Subdivide[0, 1, 1]];
SetDirectory[NotebookDirectory[]];
Export["test.stl", RegionProduct[MeshRegion[mesh], rv]];
stl = Import["test.stl"];
bm1 = ToBoundaryMesh[stl];
(*Color surfaces by feature angle*)
groups = bm1["BoundaryElementMarkerUnion"];
temp = Most[Range[0, 1, 1/(Length[groups])]];
colors = ColorData["BrightBands"][#] & /@ temp;
bm1["Wireframe"["MeshElementStyle" -> FaceForm /@ colors, 
  PlotRange -> {{-1.5, 1.5}, {0, 1.5}, {-1.2, 1.2}}]]
FindMeshDefects[MeshRegion[bm1]]

3D extruded mesh


This is nothing compared to @Tim Laska's detailed answer above, but I found that a quickfire way of removing the small slivers from the geometry was to use the option MaxCellMeasure -> Infinity while turning the region into a mesh, as such:

mr = DiscretizeRegion[regionCones, MaxCellMeasure -> Infinity]

giving me

enter image description here

This works probably because the slivers are small, and setting a large value for MaxCellMeasure forces the meshing algorithm to ignore them. I don't expect this to work for generic non-manifold geometry. For that, refer to @Tim Laska's answer above.