The EDITOR editor should be able to work without use of "advanced" terminal functionality (like old ed or ex mode of vi). It was used on teletype terminals.
A VISUAL editor could be a full screen editor as vi or emacs.
E.g. if you invoke an editor through bash (using C-x C-e), bash will try first VISUAL editor and then, if VISUAL fails (because terminal does not support a full-screen editor), it tries EDITOR.
Nowadays, you can leave EDITOR unset or set it to vi -e.
Each application is free to interpret an unset variable and an empty variable in the same way or not. It is generally a bad idea to give them different meanings, and most applications don't do it, but it happens.
An example in shells themselves is the IFSshell variable (which is usually not exported in the environment, but the same principle applies). If unset, the shell behaves as if the value was $' \t\n'.
In a shell script, $foo expands to an empty string whether foo is set to an empty value or unset. You can run the shell under the nounset setting (set -u or set -o nounset), in which case the shell reports an error and exits if you try to expand an unset variable. Otherwise, you can distinguish between unset and empty variables with parameter expansion modifiers: ${foo:+a} expands to a if foo is unset or empty and to the empty string otherwise, whereas ${foo+a} expands to a even if foo is set to the empty string.
Best Answer
there is none but:
setenv
is the name of the command in the *csh family of shellsexport
is the name of the command in the "other" family of shells (ash, bourne, bourne again, zsh)and, ok, the syntax is slightly different. but other than that? none.