I would like to have the default cube cast its shadow on the orange plane, but not the purple:
Is this best done with render layer? Can it only be done with render layers?
Unfortunately, I am pretty sure this is impossible to do in Cycles material nodes. You will have to do this in the compositor.
First place the object which you do not wish to receive shadows on a separate layer. Then create two render layers, the second of which excludes all layers except the one where you just put the object.
Everything is on layer 1, except the plane which should not be receiving shadows which is on layer 2. So I am excluding layer 1 from the second render layer.
Now give the shadowless object a pass index under Object Properties > Relations rollout.
And make sure you have the Object Index pass enabled for the main render layer.
Now head over to the compositor and use the object index pass to mix the second render layer onto the first one.
Here is the final result: