What is FreePBX
The answer to this question has changed over the years.
FreePBX started as a GUI that your could lay on top of a base Asterisk install in order to gain simplified management.
FreePBX did this by setting up a mysql instance that contains all of the configuration details for Asterisk. When you click the "Apply Config" button, it would then write the details into Asterisk's configuraiton files and then reload Asterisk.
At the core, that is what it still is today.
Asterisk is the PBX and FreePBX is the GUI that makes it simpler to manage.
Many of the previous Asterisk based PBX solutions (Trixbox, Elastix, PBX in a Flash) used the FreePBX GUI as part of their distribution design.
Today, FreePBX itself is also a distribution that installs the Asterisk PBX, the FreePBX GUI and some other customized bits.