I'm not aware of a truly general approach. I solve these kinds of bonds by using invisible bonds -[,,,,draw=none] for placing atoms or determining access points for other bonds.
Ferrocene and similar compounds are not quite easy with chemfig and my approach is even less general. So far the only way I know is to draw them from scratch (but then I do not need to draw metallocenes very often (or ever)). Here's a try I recently used as an answer on chemieonline.de:
\documentclass{article}
\usepackage{chemfig}
\setcrambond{3pt}{}{}
\begin{document}
\chemfig{
?[a]>[:18,.8]-[:108,.8]-[4]
(
-[:-40,.65,,,draw=none]@{r1}-[2,,,,dotted]
Fe
-[2,,,,dotted]@{r2}-[:-130,.7,,,draw=none]
?[b]-[,,,,line width=3.5pt]>[:72,.8]-[:162,.8]-[:-162,.8]?[b,4]
)
-[:-108,.8]?[a,4]}
\chemmove{
\draw (r1) ellipse (15pt and 8pt);
\draw (r2) ellipse (15pt and 8pt);
}
\end{document}

The values need adjusting of course (I was being lazy) but the principle should be clear. What I've done here is the following: I drew the cp rings using chemfig's ? hook and marked the center (or actually only somewhere near) by using the @{<nodename>} syntax. These nodes then are accessed via \chemmove (which basically is a wrapper for \tikz[remember picture,overlay]) to draw the ellipses. This needs a least two compilations.
The second one's easier. I just use an invisible bond like I said above. This should also work for other similar compounds:
\documentclass{article}
\usepackage{chemfig}
\usepackage{chemmacros}% for formal charges
\definesubmol{inv}{-[,,,,draw=none]}
\begin{document}
\chemfig{
H>[:-10]C(<:[:60]H)
(-[:-14.5,2,,,draw=none]Pt(-[4,1.8])(<[:-120]Cl)(<:[:60]Cl|^{\fminus})-Cl)
=[6]
C(<[:-110]H)<:[:-20]H
}
\end{document}
