This shit is all untested so tell me if it works I guess. It's been a while since I've done scripting.
1. I think this will work
bind ctrl +ctrlp;
bind p myaction;
alias +ctrlp "alias myaction action";
alias -ctrlp "alias myaction nullaction";
2. Yeah this is possible. Extracted from one of my scripts to toggle netgraph
alias toggle_net_graph tng1
alias tng0 "net_graph 0; alias toggle_net_graph tng1"
alias tng1 "net_graph 3; alias toggle_net_graph tng0"
3. You can't anymore. You used to be able to do this using "wait" but Valve has disabled it permanantly I think. Even if they didn't, it's disabled on most servers since you can do some really terrible things with it.