You need to tell the command where to output the file. I.e what Directory. You place the path to the directory after the -o option.
Because of where you placed the -o option, your script was actually missing the path to the source file. Which goes before the -o option.
When dealing with do shell script. You should remember to use quoted form of
This will escape space in the file/path names. Spaces in unix commands will be interpreted as part of the command. i.e the end of one argument in the command and the start of the next.
where you have a file/path with a space in it like photo copy.jpg; photo will be seen as the file/path and copy.jpg will be seen as the next part of the command. single quotes around 'photo copy.jpg' ail correct this.
Try this.
set file_Path to POSIX path of (choose file)
set save_path to POSIX path of (choose folder)
do shell script ("/usr/bin/qlmanage -t -s640 " & quoted form of file_Path & space & " -o " & quoted form of save_path)
Also @regulus6633. if you use the -h option (displays extensive help.) you will see the part about output to file