Is there anyway to make a macro with a modifier without it getting mirrored to the other modifier?
Do you mean a macro mapped to AltGr plus some other key? If so, then no, macro sources don't distinguish between left and right modifiers, and AltGr is really sent as “right Alt”. (Blame Microsoft for this bit of stupidity in the USB spec.)
Basically I want to use Altgr to switch to a special layer with symbols important for programmers.
That should really be done by the host. USB (like PS/2) deals in keys, not characters.
Furthermore: is there a way to remap a key to a shifted key?
Do you mean something like having the ‘1’ key send ‘!’? If so, you would need to define a macro that sends SHIFT-1-UNSHIFT. Again, USB and PS/2 send key events, and it's up to the host to map them to characters. What OS are you using that doesn't handle keyboard layouts properly?