Newbie question : where to put "advanced" page content? It's been almost 3 years that I'm a web developer and I just started with Drupal 8. I have to say that's I'm feeling really confused by all the things in the Drupal worlds that you have to understand in order to create a website.

Here is the thing, I'm supposed to create a little website (3 pages for now) with a 100% custom appearance. I started by creating a new Drupal 8 theme with its libraries and dependencies and started coding the website's layout in twig. I added a few blocks in the theme's configuration (and in the twig) like a header block, two highlights blocks, a main content block and so on.

I'm at the point where I finished the layout and I'm supposed to add content of the 3 pages :


A main page containing text, images, a thumbnail of the last posted photos album, and an overview of the two last posted articles.
A form who's supposed to store the data somewhere (in the database I guess).
A second form who's supposed to do quite the same.


My questions are : 


Since I have a very specific content for my three pages with HTML/CSS and Javascript, where am I supposed to put it ? Simply in 3 separated "Basic page" in the "Content" section of Drupal ? It seems way too simple. The "Basic page" content isn't supposed to be only text/images ?
I'm using a "naked" Drupal. In order to create the forms and other special stuffs, I'm supposed to use modules, right ? Are there any that are mandatory ?


Thank you all in advance, and please excuse my English, it isn't my mother tongue.
IMHO it's easier to start with content, and add the design once the content structure is ready. Drupal tries to separate content and design as much as possible, so you can always change one and keep the other.

There are no mandatory modules, especially with Drupal 8 you can get very far without any additional modules.

Drupal stores the content of a page as "nodes". Nodes have a type, like "article" or "product". You can use the default node types that you get out-of-the-box, or define your own. Each node type has a number of fields, like a text fields, image fields, date fields, etc. You can enhance node types by adding additional fields. Drupal will take care of rendering those fields on a form, storing the content in the database, and displaying the content on the page. There is a lot more I could say about this, but I recommend that you read the documentation, especially the part about content structure.