What's the difference? It's as simple as this:
The filesystem is isolated to a container. If you write something to it, it will only be accessible in that one container, and its lifespan won't extend beyond that of the container.
A volume allows data to persist beyond the container lifetime, but is limited to the lifetime of a pod. The volume can be used and shared by any container in a pod, but it cannot be shared across multiple pods. This is useful for sharing data between containers in a multi-container pod.
A persistent volume (PV) allows data to persist beyond the lifetime of a cluster. With a PV, data can be shared across many nodes, pods, and containers. More often than not, you will likely want to use a persistent volume, but consider how long your data really needs to live before you choose this option.