Does cancelling an (AUTO)VACUUM process in PostgreSQL make all the work done useless?
Work done by an interrupted VACUUM FULL will be entirely lost, as it will simply revert to using the previous version of the table and throw away the in-progress version of the table.

Work done by a regular (not-FULL) VACUUM might not be entirely lost.  It cleans indexes in batches, and any batches which were fully cleaned will not need to be cleaned again.  They will still need to be inspected again, but will be found already clean the next time.  So you might save some write IO which won't need to be repeated.