If a replication controller ever only manages pods that are defined in its template, then what's the point of labeling the template and specifying a selector that matches the label?
Because label selector is how we group things in Kubernetes. A Replication Controller manages pods with labels matching the Replication Controller's selector, not the pods with exactly the same template.
For example, if you update the pod template of a Replication Controller, it won't update the pods it manages, unless the pods are killed and then replaced. (If you want to have those pods to match pod template, you may use Deployments or rolling-update instead, and they will update your pods progressively.)
A use case is that sometimes you may want to orphan a pod to debug it. More specifically, you may change a pod's labels to orphan it (its replication controller no longer manages it) so that it can be replaced and debugged out of the critical path.