The inner connection is primarily that the "best approximation" problem can be solved using adjoint functors. Single adjunctions \\(L \dashv R\\) are the fundamental thing; it just happens that sometimes you can build a chain of adjunctions \\(A \dashv B \dashv C\\). In such a chain, \\(B\\) is both a left adjoint (to \\(C\\)) and a right adjoint (to \\(A\\)), and it's these adjunctions that formalize how \\(B\\) is a best under-approximation to \\(C\\) and a best over-approximation to \\(A\\). For the same reason, \\(A\\) is a best under-approximation to \\(B\\), and \\(C\\) is a best over-approximation to \\(B\\).

As an aside, here's a _crazy_ mnemonic tying the left/right idea to the least/greater idea. In Japanese, there's a kanji δΈ‹ , which can be read "shita" (_shhtah_; isn't linguistics fun?). It means "below", or "under", and it looks an awful lot like a rotated \\(\dashv\\). So the thing on the left side of the adjunction is "below" the thing on the right.

As an aside, here's a _crazy_ mnemonic tying the left/right idea to the least/greater idea. In Japanese, there's a kanji δΈ‹ , which can be read "shita" (_shhtah_; isn't linguistics fun?). It means "below", or "under", and it looks an awful lot like a rotated \\(\dashv\\). So the thing on the left side of the adjunction is "below" the thing on the right.