A Data Type defines a Class of data, like a Customer, an Address or a Product. Typically the first thing you associate with a Data Type is its Data Model: the Properties that pertain to that type. For example, a Customer has First Name and Last Name; an Address has Street Number, Street Name, City, ZipCode ... maybe others.
A Field Group is used when an existing Data Type models some data that needs to be captured within your Case Type (or another Data Type). A Customer has a Residential Address, so you could add a Field Group property on the Data Model of the Customer Data Type called "Residential Address" that is of type Address. You might do the same for a "Postal Address" property. The Customer, in turn, may be used as a Field Group (or more likely a Data Reference) within a Loan Application Case Type.
When an instance of a Customer is captured in your application, each of its two Address fields then use the same data structure. This maintains consistency when the same data structures are used in many places across your application.
You can even implement a View once on the Address class to configure how an Address is captured, and that View can be re-used twice when your Customer View is configured to capture its Residential and Postal Address, in addition to other Customer fields.