Zombie processes are created when a child process dies, but due to the parent being blocked cannot provide the exit code back, and hence does not yet get reaped by the kernel.
They are visible in the process table with a 'Z' status.
Zombies will be taking up memory, but otherwise are not serious. Their presence is a smell of a badly behaved application.
Usually they can be killed by solving whatever problem their parent is reliant on, but sometimes only a reboot can remove them.
Blocked processes are waiting on some form of external IO. If many are present, the system will have high load and generally not be behaving as expected.
Paging processes will be swapping out chunks of their memory to disk.