The execution level can easily be set by using the manifest through the Lazarus IDE.
I prefer my own manifests (not as .manifest files to ship, but as an external resource that's linked through my own .rc) because I use the Windows compatibility flags as well as custom paths where to load DLLs from (this allows me to use statically linked DLLs to be used from subfolders while having both 32 and 64 bit executables in the same folder).
For debugging, you need to start the Lazarus IDE elevated, it afaik doesn't matter at all if the debugged program has a manifest, and which execution level is specified there.