There are several techniques to do this. One of them is suggested by percusse.
The following shows the first two techniques in one example. Later I show a better example.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{center}
\begin {tikzpicture}[scale=1]
\coordinate (a) at (0pt,0);
\coordinate (b) at (130pt,0);
\coordinate(c) at (b)++(0,10pt);
\draw (a) circle (28pt) (a) circle (22pt) (a)circle(20pt);
\draw (b) circle (16pt) (b) circle (12pt) (b)circle(10pt);
% First techique:
\draw (a)+(55:28pt) coordinate (a@55)
(b)+(135:16pt) coordinate (b@135)
(a@55) -- (b@135);
% Second technique (requires calc.)
\draw ($(a)+(55:28pt)$) -- ($(b)+(-15:16pt)$);
\end {tikzpicture}
\end{center}
\end{document}
This example is based on your code but it's not very maintainable. For example, what if the radius of one circle changes: you'd have to make several changes. The following shows how you may overcome this.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{center}
\begin {tikzpicture}[scale=1]
\draw let \n{first outer}={28pt},
\n{first middle}={20pt},
\n{first inner}={10pt},
\n{second outer}={16pt},
\n{second middle}={12pt},
\n{second inner}={10pt},
\n{first angle}={55},
\n{second angle}={135}
in
(0,0) coordinate (first centre)
(130pt,0) coordinate (second centre)
\foreach \radius in {outer,middle,inner} {
(first centre) circle (\n{first \radius})
(second centre) circle (\n{second \radius})
}
($(first centre) +(\n{first angle}:\n{first outer})$) --
($(second centre) +(\n{second angle}:\n{second outer})$);
\end {tikzpicture}
\end{center}
\end{document}
(and)characters. You can use\draw([shift={(55:28pt)}]a)--([shift={(135:16pt)}]b) ;. However, I would suggest to switch tocalclibrary notation with$use. Check the manual for further details. – percusse Feb 19 '12 at 13:00\draw($(a)+(55:28pt)$) -- ($(b)+(135:16pt)$);by adding\usetikzlibrary{calc}. – percusse Feb 19 '12 at 13:28