export is a Bash builtin, echo is an executable in your $PATH. So export is interpreted by Bash as is, without spawning a new process.
You need to get Bash to interpret your command, which you can pass as a string with the -c option:
bash -c "export foo=bar; echo \$foo"
ALSO:
Each invocation of bash -c starts with a fresh environment. So something like:
bash -c "export foo=bar"
bash -c "echo \$foo"
will not work. The second invocation does not remember foo.
Instead, you need to chain commands separated by ; in a single invocation of bash -c:
bash -c "export foo=bar; echo \$foo"