Traditionally filesystems were created as kernel drivers/modules. And as we said..the kernel runs in ring 0 with full access.
Fuse is a kernel layer that allows the kernel to use filesystem implementions written in userpace. In other words, allows the kernel to redirect filesystem calls to a userspace (ring 3) implementation.
You can write your whole filesystem as userspace application, register it with the kernel and if a program tries to open a file from your filesystem the kernel asks your implementation to do it.
Pro
We gain security and make creating filesystems a lot easier.
Con
Speed. But if making a network file system, we cannot care less, right?
Fuse filesystems can do much less than filesystems that are kernel modules.
You cannot do stuff like send commands over the SATA bus to communicate with the HDD directly. FS which are kernel modules are capable of this.