Date vs Timestamp field-type
In Drupal 8, timestamps (and created and updated) are stored as integers in the database.  They do not use the native datatype.  Timestamps can be added via the UI, but created and updated can only be used as basefields.

Datetime and daterange fields are stored as ISO strings: date-only as Y-m-d and date+time as the full ISO8601 format (currently without the UTC offset).  These are store as plain strings, not as a native type, since the date/time handling in the default database backends is not portable.

The reason you are seeing different HTML, is that the two field types use different formatters.  Your timestamp is using TimestampFormatter and it looks like your datetime is using DatetimeDefaultFormatter.  It is possible to get both fields to output the same if you use the DatetimePlainFormatterformatter. You can also write your own formatter for timestamps to output HTML5 time.  For various reasons, they formatters between the two types are different.