There was a kink in my workflow for OmniFocus for quite a while, I could never find the right way to handle items I've delegated to or need feedback from others on. There are dozens of different workflows that I've seen out on the interwebs but none of them fitted right.
I've slowly changed role at $work over the last couple of years, from being a full time techie to running a (growing) team. I was finding having a single @waiting-for context didn't scale, I tried putting tagging into the task summary but that didn't allow me to see things at varying levels.
What finally worked for me is to nest some contexts like this:
By nesting in this way, I do a couple of things which are important to me. Firstly, any items I need to talk to John Doe about will sit in the base "John Doe" context. Secondly, any items which I need John to come back to me on will sit in the "WF: John Doe" context.
This simple change to my workflow means I can simply select one context ("John Doe") and see both the items I need to talk to John about and the items I'm waiting for him on.
When taken to the next level, it becomes even more powerful. By continuing the nesting idea, you can give more structure to your agenda contexts:
Now I have layers to the agendas. I can select the "Engineering team" context if I want to see every task I have that involves that team, from individuals to the meetings. I can also drill down to individuals to see the micro view.
When used with the new OmniFocus "quick open" function, you get REALLY fast access to the data you need at whatever level you need to see it at. It makes it easy when I catch up with anyone to pull up a list of what I could ask them and what they're supposed to be coming back to me on.
The down side is you end up with a lot of contexts. I have almost 100 at the moment, 80 of them nested under my base "Agenda" context. I've not noticed a performance issue from doing it though and the payoff is more than worth the potential clutter.