Ich mache fast nichts mit git, nur Mercurial. Die Begriffe sind sicher anders, aber ich glaube meist sind die beiden sehr ähnlich.
Eigentlich ist das doch haargenau das, was man mit Subrepos (git=submodule?) macht. Die Libraries gibt es als Subrepo in deinen Projekten.
Wenn man in Projekt A einen Bug in Library X fixed pusht man das auf den Server zurück (dort liegt Library X als eigenständiges Repo). Projekt B hat ebenfalls Library X als Subrepo und kann sich die Änderungen mit einem Klick holen. Muss es aber nicht, es kann auch seinem Stand bleiben.
Währenddessen nutzt Project C auch die Library X, allerdings hat es an der Library etwas herumgedoktert, spezielle für seine Zwecke. Das Unter-Repo X hat hier einen privaten Seitenzweig der nicht zurück auf den Server gepushed wird. Für den Fall dass man in Projekt C einen Bug in X fixed und den zurückspielen möchte
Das Repo von Projekt A/B/C merkt sich immer auf welchem Stand sein Unterrepo "Library X" ist. Gehst du also einen Monat zurück ist deine Library X dort auch wieder auf dem passenden Stand.
In Git geht das wahrscheinlich genauso...