For the first part of your problem you can use Entity reference to create the relation between the content types:
Provides a field type that can reference arbitrary entities:
- A generic entity reference field
- Four widgets:
- Two implemented on top of the Options module (Select and Radios/Checkboxes),
- Two autocomplete widgets (one with one text field per entry, one tag-style with comma-separated entries in the same text field)
For the second part, one content type form inside another content type form you have this modules:
The Inline Entity Form module:
Provides a widget for inline management (creation, modification,
removal) of referenced entities. The primary use case is the parent ->
children one (product display -> products, order -> line items, etc.),
where the child entities are never managed outside the parent form.
Existing entities can also be referenced.
A deliberately simple way to invent nodes on the fly in order to refer to them via entityreference.
References dialog (beta2 release only)
This module extends reference fields like the user and node reference fields by adding links to add, edit and search for references through a dialog.
Autocreate Node Reference
Autocreate Node Reference adds a node reference field and automatically creates the referred node by cloning a template node.
Node Reference Create
Node Reference Create is an enhancement to the nodereference
autocomplete widget that allows users to reference non-existent nodes.
Entity connect (rc5 release only)
It will help you to improve the User Experience for creation of new entities or edition of linked entities on your entity reference fields.
The "add a new" button will enable you to add / create a new entity. The first form will be cached then the new form will be generated. Once the new form is completed and saved the user will return to the original form.
Important: The module most used is Inline Entity Form, but it doesn't works with the Automatic Nodetitles module, but I know that Entity connect works fine with it. In addition with Entity connect you can edit existing entities. In my case I prefer Entity connect.
For the third part, the visualization of one entity (or more entities) inside another entity I think that you can use the EVA: Entity Views Attachment module, is very easy to use.
"Eva" is short for "Entity Views Attachment;" it provides a Views
display plugin that allows the output of a View to be attached to the
content of any Drupal entity. The body of a node or comment, the
profile of a user account, or the listing page for a Taxonomy term are
all examples of entity content.
I think that you should see this: Drupal 7 Node Reference Tutorial