A whole bunch to unpack here...
Yes, there needs to be some infrastructure. Many SSO solutions (Duo, Okta, AzureAD, for example) already support the FIDO protocol. If an enterprise is already using one of those tools, they are good to go. With respect to privilege escalation, that is Authorization (what are you allowed to do). FIDO is focused around Authentication (are you who you claim to be). FIDO is relatively new, so some of the back end systems are still catching up with this technology. I know that OpenSSH now supports FIDO credentials for SSH'ing to systems.
Some history. FIDO was originally built for the consumer side. Authenticating to Gmail, Facebook, Twitter, etc. That worked great as each system supports FIDO and the end user registered their FIDO tokens with each service. That model poses some issues for Enterprises. They want a single source of identity. That's what SSO is for. Once you authenticate to the SSO solution, they you can be authorized to other systems. We are almost at the tipping point with the ability to properly implement a FIDO solution in the Enterprise. Most of the big SSO/Authentication/Identity solutions support it now.
Yubico's FIDO implementation uses the Generic HID interface. YubiKeys support multiple MFA "protocols" on the same key. OATH OTP, Smart Card, FIDO (and a Yubico specific OTP solution). Most folks don't understand the underlying technology of each protocol and do not understand the different security concerns.
FIDO can absolutely be implemented in software. In simple terms, that's what Passkeys are. (Prior to the Apple M1 Chips, I could register my computer with TouchID as a FIDO "Token". This was called a Platform Authenticator in the FIDO parlance. External Security Key are called roaming authenticators)
You need to be able to store a private key on something, whether that is a Security Key, a TPM, or a Secure Encalve, it does not matter. (I think of a Security Key as TPM on a USB stick). When a website or system wants to authenticate by FIDO, it sends a signed challenge down to the browser/system, which sends that challenge to a device to process. That device can be an external security key, or a FIDO solution on a phone/computer. Look at the CTAP protocol. FIDO Alliance has a good overview here:
FIDO Alliance Specifications Overview - FIDO Alliance. CTAP is how the system/browser talked to the authenticator. WebAuthn is how the system talks to the browser. Yubico has a good overview of WebAuthn here:
WebAuthn (yubico.com)
Hopefully that helps?