Is there a list of tokens anywhere?
This is a bit tricky to answer, because there are three different token processors in CiviCRM.  The Smarty processor, the legacy token processor, and the new Civi\TokenProcessor processor.

Legacy Processor (aka CRM_Utils_Token)

For most messages - quick emails, PDFs, etc. - you're using the legacy token processor.  You can find most of these tokens in CRM_Core_SelectValues.  Note that contacts will provide all exportable fields as tokens, minus the ones explicitly excluded in that file.

You can also add tokens via extensions, so this isn't a complete list.  Note that with the legacy token processor, you can only add new contact tokens.

TokenProcessor

Currently, TokenProcessor is only available with Scheduled Reminders and Flexmailer.  Work is currently underway to bring TokenProcessor support to the rest of CiviCRM, which will allow you to use more fields, and define custom tokens that are based on contributions/activities/etc.  In the next month or so, I'd expect to see support for TokenProcessor for emails sent with Email API (i.e. CiviRules), along with PDFs/emails generated from activities, with contribution PDFs/emails not far behind.

Smarty

Smarty tokens are available only in System Workflow messages, and the tokens vary on a per-template basis.  You can also enable Smarty token processing if you're not using Flexmailer and/or Mosaico by adding define( 'CIVICRM_MAIL_SMARTY', 1 ); to your civicrm.settings.php.