Why are two database tables (node and node_field_data) used for node data?
To add additional information to @jaypan's answer following are my observations

node_field_data contains 6 fields 

nid     int(10) unsigned
vid     int(10) unsigned
type    varchar(32) The ID of the target entity.
status  tinyint(4)
title   varchar(255)
uid     int(10) unsigned    The ID of the target entity.
revision_translation_affected   tinyint(4)NULL


the nid is primary key in this table and referred by node and other fields as target id. 
The type attribute tells what kind of content it is referring to, like posts, article or custom. In case of custom, it will store the name of the content type.