Firefox Sync is built into the desktop versions of Firefox, as well as Firefox for Android and Firefox for iOS. Firefox Sync synchronizes state and configuration data used by the browser, such as bookmarks, history, preferences, bookmarks, and so forth among all your devices. The exact types of information synced is user-configurable in the browser's preferences or options page.
It uses Firefox Accounts for account, authentication and key management. All data is encrypted and decrypted on each device; no Sync data is ever transmitted to a server without being encrypted. Mozilla does not hold any keys to your Sync data. Your data can only be decrypted by someone who is able to log in to your Firefox Account (ie, that knows your Firefox Accounts password and has access to your email for the verification required during the initial login).
This document serves as an index for all technical documentation related to Sync. It is not designed for use by end-users, but instead for people who wish to understand the details of how Sync is implemented or wish to interact with it.
The always prolific Richard Newman has written a couple of notes about bookmark syncing (first, second) and has a blog where he talks about the various challenges syncing this kind of data.
Searchfox has links to the main sync code and the storage layer. There are also some notes in a google document (that we really must move to its own Wiki page)
There's also information available to help debug and diagnose Android sync issues.