- Not the general way to do this, it is only work for the implicit equation surfaces.
- For the
RegionMember.
Clear["Global`*"];
c1 = Cylinder[2 {{0, 0, -2}, {0, 0, 2}}];
c2 = Cylinder[{-2 {1, 1, 1}, 2 {1, 1 - 1/5, 1}}, 4/5];
reg = ImplicitRegion[{x, y, z} ∈
RegionBoundary@c1 && {x, y, z} ∈ RegionBoundary@c2, {x,
y, z}];
pt = {1, 0, 1/905 (590 - Sqrt[469551])};
{RegionMember[reg, pt], pt ∈ reg}
pts = {x, y, z} /.
FindInstance[{x, y, z} ∈ reg, {x, y, z}, 500];
Graphics3D[Point[pts]]
{True, True}.

- For the plot, we have to define the
MeshFunction from the Implicit form of such infinite cylinders.
- We use
EdgeForm[], FaceForm[] to erase the cylinder boundary and the cylinder surfaces.
(* fun = Function[{\[FormalX], \[FormalY], \[FormalZ]},
SubtractSides[RegionConvert[c2, "Implicit"][[1, 2]]] // First //
Evaluate]; *)
fun = Function[{x, y, z},
SubtractSides[RegionMember[c2, {x, y, z}] // Last] // First //
Evaluate];
plot = RegionPlot3D[DiscretizeRegion[c1, AccuracyGoal -> 3],
MeshFunctions -> fun, Mesh -> {{0}}, MeshStyle -> Thick,
PlotStyle -> Directive@{EdgeForm[], FaceForm[]}, Boxed -> False, Axes -> False,
BoundaryStyle -> None];
lines = DiscretizeGraphics[Graphics3D[Cases[Normal@plot, _Line, -1]]];
{plot, lines}
ArcLength[ConnectedMeshComponents@lines]

{6.16529, 6.16467}
- Use
SurfaceContourPlot3D as @lericr.
SurfaceContourPlot3D[
SubtractSides[RegionMember[c2, {x, y, z}] // Last] //
First, {x, y, z} ∈ c1, Contours -> {0}, Boxed -> False,
Axes -> False, ContourShading -> None]

- the result of
SliceContourPlot3D not so good.
SliceContourPlot3D[
SubtractSides[RegionMember[c2, {x, y, z}] // Last] // First //
Evaluate, RegionBoundary@c1, {x, y, z} ∈ c1,
Contours -> {0}, ContourShading -> None,Boxed -> False, Axes -> False]

RegionIntersectionshould be warning/error notBooleanRegionlike everything is fine. Or is there any reasonable/practical usage of such output? $\endgroup$BooleanRegion. This is just my guess, but it seems likeRegion-related functions are primarily designed for "numerical" image processing. Maybe someone will come up with a nice solution (which I also want to get), but it might be quicker to "reinvent the wheel". $\endgroup$RegionIntersectionwork.Region[RegionIntersection[RegionBoundary@Ball[{0, 0, 0}, 1], RegionBoundary@Ball[{1, 0, 0}, 1]], PlotRange -> 1]$\endgroup$