For version 9:
f[x_, y_, z_] := x^3 + y^2 - z^2
g[x_, y_, z_] := x^2 + y^2 + z^2 - 1
cp3d = ContourPlot3D[{f[x, y, z]==0, g[x, y, z]==0}, {x, -2, 2}, {y, -2, 2}, {z, -2, 2},
BoundaryStyle -> {1 -> None, 2 -> None, {1, 2} -> {Thick, Red}},
ContourStyle -> Opacity[.7], Mesh -> None, ImageSize -> 400];
points = Cases[Normal@cp3d, Line[x_] :> x, Infinity][[1]];
Length@points
121
lpp3d = ListPointPlot3D[points, PlotStyle->PointSize[Large]]/. Point -> (Sphere[#, .05] &);
Row[{cp3d /. Line -> Tube, Show[cp3d, lpp3d]}, Spacer[5]]
Alternatively, using MeshFunctions
cp3d2 = ContourPlot3D[f[x, y, z] == 0, {x, -2, 2}, {y, -2, 2}, {z, -2, 2},
PlotPoints -> 50, ImageSize -> 400, BoundaryStyle -> None,
ContourStyle -> Opacity[.7], MeshStyle -> {Red, Thick},
Mesh -> {{0}}, MeshFunctions -> {Function[{x, y, z}, f[x, y, z] - g[x, y, z]]}];
points2 = Cases[Normal@cp3d2, Line[x_] :> x, Infinity][[1]];
Length@points2
201
lpp3d2 = ListPointPlot3D[points2, PlotStyle -> PointSize[Large]] /.
Point -> (Sphere[#, .05] &);
Row[{cp3d2 /. Line -> Tube, Show[cp3d2, lpp3d2]}, Spacer[5]]