A Namespace is a logical isolation of compute and kubernetes resources. Via namespaces multiple teams can share a kubernetes cluster for the purposes without stepping over each other.
A Pod is a unit of compute in Kubernetes. This an abstraction used by Kubernetes to handle containers. Kubelet is responsible for initializing Pods. Pods are logical and not represented by any running process(es). Rather a pod has mappings to set of containers.
A ReplicaSet is used to specify scaling and replication of pods. In Kubernetes we have the capability to auto heal the setup. ReplicaSet is where we specify the target state (number of instances of pods to be deployed) and based on that, Kubernetes will ensure those many pods are alive.
A Deployment resource is an improvement of RS and has additional features to perform rollouts/rollbacks and rollout strategy.