The main differences between SAML 2.0 and SAML 1.1 include the ability of SAML 2.0 messages to be signed and encrypted in their entirety, while SAML 1.1 messages cannot; SAML 2.0 supports a wider range of attributes such as user roles, whereas SAML 1.1 only supports limited attributes typically indicating who was authenticated, how, and when; SAML 2.0 supports many more bindings like HTTP Redirect (GET), SAML URI, and reverse SOAP, while SAML 1.1 only defines a SOAP binding explicitly; SAML 2.0 supports Single Logout (SLO) while SAML 1.1 doesn't; and SAML 2.0 supports metadata while SAML 1.1 doesn't. The transition to SAML 2.0 was necessary due to the limitations of SAML 1.1, including its lack of flexibility, limited authentication options, and vague specifications in areas such as metadata exchange and session management.