Your desktop is bigger than what you see at any given time.
The viewport is the screen-size piece of desktop you are currently
viewing.
You can move around within this bigger desktop in screen-size increments
(the norm). You can also smoothly scroll around it, but few WMs support this
and few people do it (or want it, I assume).
If a window is hanging off the edge of one viewport, its non-visible
portion will be visible in the next viewport.
You can "stick" a window (as in, "stuck to the monitor glass") so that it
remains in the same position regardless of viewport movements.
With virtual desktops, aka workspaces:
Each workspace acts as an independent screen with its own set of contained
windows.
A window can be designated to show up on multiple workspaces, and/or sent
around from one workspace to another, usually via a menu option such as "send
to desktop 3".
Windows do not overlap between workspaces as they do with viewports
Workspaces are generally not very spatially oriented, rather they tend to
have names or numbers, and are presented as a list.
These descriptions may be a little biased in favor of viewports, since I prefer
them. See why viewports rule.
Other explanations
A Viewport is a partial view of a virtual Desktop. Kahakai not only lets
you have virtual desktops (to give you the effect of having a bigger screen),
it lets you have multiple Desktops, as if you had multiple physical
screens. -- From the
old kahakai wiki (archive.org)