I'm not 100% sure what your question is about
you linked an SO post, are you mostly agreeing with what Joseph Mansfield explains in his answer except for the "outlive the scope", or are you mostly disagreeing/not seeing the point, especially with the "outlive the scope" and except "large object"?
the overall tone of that SO answer is that you only use pointers when you have no other options/no better suited options, to achieve the desired effect
I don't think you're saying that pointers are completely useless, since you acknowledged some of their uses, is your question somewhat of an "when should I use pointers?" and "when do the examples that Joseph Mansfield lists actually come up useful?", kind of question?
anyway since I'm not sure about what you're asking, I will address the part I'm sure you're mystified by: the need to have objects outlive the scope in which they are created
in fact I'm not gonna say much except point out that you have yourself provided a perfect use case for that: linked lists
the typical linked list has dynamically allocated nodes that point to one another
typically when you end up reaching out to a linked list, you rarely know in advance how many nodes you need, or what the nodes' content will be
so later down the line when you end up needing to create a node, you typically need the created node to outlive the scope in which it is created, so that the data structure will properly point to a valid node
especially with the argument of outliving a scope when an object will be in scope if it is in the main function
there are plenty of reasons why it would awkward or undesirable to put objects that need to live for a long time in the main function, you certainly rarely can (or want to) create all the nodes in a linked list inside of main