It seems simple, but I'm not sure I understand the difference. Both metadata files and vardefs contain field definitions and both ultimately point to Sugarfields
So what it's the difference between the 2 when it comes to field definitions?
The difference betwene metadata and vardefs is, metadata is a simple table structure definition so sugarcrm knows what fields/tables to add to the database on repair&rebuild.
Vardefs are field-definitions inside modules, also resulting in db fields in the table of the module, but vardefs can't exist without a module, metadata can (only) exist without a module.