There's a lot to unpack here. The answer from Jo Douglass covers a lot of the ground.
I believe that part of your confusion comes from the fact that people use ER diagrams to depict two very different kind of models. The first is entity-relationship models, better known as ER models. The second is relational models. On the surface, the two models look almost identical. But they have different features, and they are built for different purposes.
An ER model can facilitate communication between a database designer and a subject matter expert. A subject matter expert may have a deep understanding of the data: what it looks like, what it means, why it's important, and how it is to be used. That same subject matter expert may have little or no interest in technical topics like foreign keys, referential integrity, or data normalization.
A relational model is a good preliminary result for a designer intending to design and build a database in one of the popular SQL databases, such as SQL Server, Oracle, or dozens of others.
Your last diagram, with just the box labeled User, is very succinct and clear. It highlights the many-to-many nature of the relationship. It's perfectly valid in an ER model, but a relational modeler would tell you that it's not legitimate, and that a junction box is required.
It does, however lack a name for the relationship, namely Friendship. Naming a relationship is useful if you might have two relationships that are otherwise identical. It also provides a name for you to hang attributes on. In some case, you might be interested in the date on which a given friendship started.
Whether the relationship is mandatory or optional may depend on whether you are analyzing the subject matter, or designing the solution. If it's the first of these, you look to the subject matter to find out whether it's mandatory or not. Technical experts in here can't answer the question for you, because we don't know your subject matter, even when we think we do.
If you're designing the solution, you may want to look at it from a different point of view. Are you overconstraining the data? Are you underconstraining?
I hope this addresses some of what you are wrestling with. Database design isn't complicated. But it is abstract.