A Browser fingerprint is information about a user's device, collected through the browser when the user navigates on the web. If a fingerprint is based on enough information, it can uniquely identify a user's browser. It's used on the web, either directly by websites or by third-party companies. The main usage is to track user's across websites, especially to deliver targetted ads. It's also used with malicious intentions, to reveal device vulnerabilities or steal private data. Another use is to detect account stealing, as sites can know if the account is used without the usual user's browser.
Extensions exist against fingerprint and tracking. But they can have the opposite effect. Depending on the installed extensions, a user makes her browser more identifiable. Some protections are from the browser himself, like randomizing some parts of the browser behavior. Like that, a site can't obtain the same fingerprint between two visits of this browser. Also, not all the browser produce the same amount of information usable in a fingerprint.
A fingerprint is constructed with a browser's information, different techniques exist to reveal them. Graphics are part of the modern web, but many graphics rendering methods reveal browser pieces of information like its family, even its version. It also reveals system information like the operating system. Techniques exist that reveal hardware information too. It is done by testing the device computational capabilities or access device components through API. The list of installed plugins or extensions on the browser can differentiate users from each other. It's obtained by API or by the modifications they make on a page, revealing their presence. Also, plugins are effective tools to retrieve the list of installed fonts on the user's device. However, nowadays they are deprecated. As browser's parsers are not implemented uniformly between the different vendors, it's used to detect the family browser, sometimes its version.