A Feature Receiver , simply put, is code that you (the developer) can choose to "attach" to a specific feature and that code will (generally) run when either you activate or deactivate the feature. More specifically, when you click on the Activate or Deactivate button.
Feature Receivers are important as they provide you the opportunity to run any feature initialization that is required on Activate, and any clean up that is required on Deactivate. In our case, we wish to do the following:
On Activate: Set the Management of Content Types setting for the the Proposals list so we can "see" that the correct Proposal Content Type is configured with the list. Code is the only way to accomplish changing this setting.
On Deactivate: Nothing happens to created lists, such as Proposals, when a Feature is deactivated. We are going to make the decision, for the sake of our example, that when the feature is deactivated, then the Proposals list will be deleted.