You should use :inoreab instead of :iab. nore avoids mappings/abbreviations from being triggered.
Another possibility is to have the mapping analyse the context. IIRC, in lh-cpp/lh-brackets I only expand < into <|> when I detect #include or template on the same line.
clangd wants a compile_commands.json file. I found the Sourcetrail Extension for Visual Studio will generate compile_commands.json:
As a Clang based tool Sourcetrail supports the JSON Compilation
Database format for simplified project setup. This extension enables
you to generate a JSON Compilation Database from your Visual Studio
projects and solutions.