A control signal controls a single component in the architecture. When the command that is now active is not using the component this control signal controls, the control signal gets the "don't care" value.
The principle is that you don't want to restrict yourself for not using this component (=0 value), because any constraint will create a more complex logic inside the cycle. Instead you are freeing yourself from this choice by assigning the control signal with a "don't care" value, which means you can minimize the logic in the cycle and allowing the irrelevant component to work in the background (with no obvious bad consequences).
As you mentioned in your example, while using the sw command, you don't need to read anything from the memory. You could assign MemRead with the value 0, but why overkill it? It's easier to don't care if it reads data from the memory or not (it will read gibberish though), and RegWrite=0 (which in turn controls the writing of what was read from the memory) won't allow the use of this read anyway.