DelayValidation --> validation of executable is delayed until runtime. For example, if you read from a table that has not yet been created, the package will crash when you start it, unless you set this property to true. The package waits with the validation of that executable until it has to run.
ValidateExternalMetadata --> validates a component during design time using external metadata. For example, if you are reading from an Excel file, the package will show an error during design time if the excel file does not exist. If you set this to False, the error should go away.
It is possible to have a package with an error because the excel file does not exist during design time, but if you run the package it will succeed when DelayValidation is set to True.
So, basically:
DelayValidation = runtime
ValidateExternalMetadat = design time
ValidateExternalMetadata --> validates a component during design time using external metadata. For example, if you are reading from an Excel file, the package will show an error during design time if the excel file does not exist. If you set this to False, the error should go away.
It is possible to have a package with an error because the excel file does not exist during design time, but if you run the package it will succeed when DelayValidation is set to True.
So, basically:
DelayValidation = runtime
ValidateExternalMetadat = design time