I don't think
term does what you think it does: if you want to open an external
xterm window running
visidata /tmp/foo.csv, then you want to run the elisp expression:
(shell-command "xterm -e visidata /tmp/foo.csv &")
so your link should look like
[[elisp:(shell-command "xterm -e visidata /tmp/foo.csv &")]].
EDIT: as the commenters indicate, the command needs to be run asynchronously, otherwise emacs waits for the command to finish and will not do anything else. That can be done, as the OP indicates in their comment, with
start-process, but it can also be done, perhaps more simply, with
shell-command, by adding an
& at the end of the command (see the edited code above), which is how you run a shell command in the background.
C-h f shell-command has all the details.