Why label k8s deployment?
Labels lets you as user query for particular objects; from the docs:


  Labels enable users to map their own organizational structures onto system objects in a loosely coupled fashion, without requiring clients to store these mappings.


For example if you use some kind of deployment tool like Spinnaker; the tool labels every single object that it touched so it knows about it - can manage it.

When you query for a label you can use equality-based operators (=, == and !=). K8s doc should be good starting point, alternatively check out this article on labels.