Best way to assign a user to a node I would like to associate users with a node (and make it possible for users to do this themselves) and have the result easily retrievable programmatically in a nice array( preferably with $node) and also have this in Views..

I found the following options so far


User Reference 
Flag
Custom text field where I store userids as comma separated values
Entity Reference
Relation


Flag has the advantage of having actions that show on node view as well, which is quite convenient.
It depends on your requirements.

What would not recommend is something custom like comma separated values in a textfield. Because that's probably the only option where you don't have built-in views/rules/.. support.

Most of the listed solutions require edit access to the node. If you don't want that, you'd need to write custom code which allows users to add themself.

The user and entity reference modules store their information directly in the field information of the node, which might not scale well if you expect dozens or even hundreds of linked users on a single node (because the edit form will get bigger with each referenced user). The new relation project doesn't have this limiation, because every connection is a separate relation entity, which points to both the node and the user. A possible downside of that might be the additional overhead you have, compared to a simple user reference field.

Flag then is quite different to the others. Users can add themself to a node with it easily, but there is no UI provided to add other users or manage users which flagged a specific node (AFAIK), although you might be able to build something using Views, VBO and so on.