Does Compatibility Level allow unsupported functions?
Is this a bug, or am I not understanding Compatibility levels as much as I thought?


Not a bug.  The Compatibility Levels are intended solely to make upgrading easier.  IE to prevent errors or changes in behavior when you upgrade to a newer version of SQL Server.

After you upgrade to a new version of SQL Server, you might want to take advantage of new features and capabilities without changing the Database Compatibility Level, so where possible, new TSQL language features are not blocked by your lower Compatibility Level.