It is very "unlikely" that two circles in 3d intersect in two points. If this happens for two completely specified circles, the system is "overconstrained" in the sense that one can derive the intersections in different ways. The procedure here is
1. Project the center of the first circle, `H` on the plane in which the other circle lies. Call this projection `H'`.
2. Project the center of the first circle, `K` on the plane in which the other circle lies. Call this projection `K'`.
3. Compute the intersection between the lines `H--K'` and `H'--K`. Generally these lines do not intersect, but if the circles intersect in two points, they do. Call this intersection `P`.
4. The intersections have a distance from `P` which is given by `p=sqrt(r_H^2-d(H,P)^2)`, where `r_H` is the radius of the circle around `H`. It is also given by `sqrt(r_K^2-d(K,P)^2)`, where `r_K` is the radius of the circle aroung `K`. `d(H,P)` and `d(K,P)` are the distances between `H` and `P`, and `K` and `P`, respectively. This is another manifestation of the statement that the system is "overconstrained".
5. The intersections are `I_i=P\pm p*n`, where `n` is the normal of the plane spanned by `P`, `H` and `K`.
This is the corresponding code. It does not contain cross-checks if the circles really intersect in two points, it just follows the above procedure.
```
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{3dtools}% https://github.com/marmotghost/tikz-3dtools
\begin{document}
\tdplotsetmaincoords{60}{150}
\begin{tikzpicture}[scale=1,tdplot_main_coords,line join = round,
line cap = round, declare function={R=5;}]
\path
(1,2,3) coordinate (I)
(-4, 2, 3) coordinate (A)
(1, -2, 6) coordinate (B)
(1, 5, 7) coordinate (C)
(5,2,6) coordinate (D);
\path pic{3d circle through 3 points={%
A={(A)},B={(B)},C={(C)},center name=H}};
\path pic{3d circle through 3 points={%
A={(A)},B={(B)},C={(D)},center name= K}};
\tikzset{3d/plane through={(A) and (B) and (C) named pABC},
3d/plane through={(A) and (B) and (D) named pABD}}
\path[3d/project={(H) on pABD}] coordinate (H')
[3d/project={(K) on pABC}] coordinate (K');
\tikzset{3d/line through={(H) and (K') named l1},
3d/line through={(K) and (H') named l2}}
\path[3d/intersection of={l1 with l2}] coordinate (P);
\path[overlay,3d coordinate={(n)=(H)-(P)x(K)-(P)}];
% normalization of n
\pgfmathsetmacro{\myn}{sqrt(TD("(n)o(n)"))}
% radius of first circle around H
\pgfmathsetmacro{\myrA}{sqrt(TD("(A)-(H)o(A)-(H)"))}
% distance H--P
\pgfmathsetmacro{\myrB}{sqrt(TD("(P)-(H)o(P)-(H)"))}
% distance P to intersections
\pgfmathsetmacro{\myrC}{sqrt(\myrA*\myrA-\myrB*\myrB)}
% prefactor in linear combinations
\pgfmathsetmacro{\myp}{\myrC/\myn}
% build intersections
\path[overlay,3d coordinate={(I_1)=(P)+\myp*(n)},
3d coordinate={(I_2)=(P)-\myp*(n)}];
% mark intersections
\path[red] foreach \X in {1,2}
{(I_\X) node[circle,draw,inner sep=1ex,label=below:{$I_\X$}] {}};
%\path [name intersections={of=c1 and c2}];
\begin{scope}[shift={(I)}]
\draw[tdplot_screen_coords] (I) circle[radius=R];
\end{scope}
\path foreach \p/\g in {I/0,A/90,B/90,C/90,D/90,H'/90,H'/90,P/90}
{ (\p) node[circle,fill,inner sep=1pt,label=\g:{{$\p$}}]{}};
\end{tikzpicture}
\end{document}
```
![Screen Shot 2020-12-01 at 6.31.08 PM.png](/image?hash=d179f6e3e63941ca3b881888ff3d2b3c0e14ca7f75ed86781f6d12a2af7a6382)