Here are some personal recommendations:
1. Don't use an obtuse hidden point system which makes the player anxious about choices. It makes players want to min-max the game instead of just playing it for fun. Sometimes I want to choose something because it is very funny, but I won't if I know it will lock me out of content.
2. No choices where the player is accidentally locked out of content without them knowing. So, no game over states and no 'you don't have enough points and can never get them anymore in this playthrough' shenanigans.
3. If you make routes, make it clear to the user when there is a branch. (e.g., ... this choice will make you no longer pursue this girl...)
4. Don't make too many branches.
Preferably 2 routes per character : (don't date her, do date her), and at most 3 routes per character (don't date her, date her love, date her corrupt). This invites a second playthrough where it is obvious to the players how they can choose the other routes in the second playthrough.
5. Don't do a sandbox game where a player has to do numerous trial-and-error runs to find out when to go where through pure guessing.
6. If you have something like currency, make it super easy to acquire. Don't make it a grind because that invites players to cheat.
7. Don't make the relationships interdependent. That complicates things needlessly and invites players to cheat. I.e., if you date girl A then you cannot date girl B, but you can date girl C. But, if you date girl B then you can only date girl C if you are on the corrupt route with girl B, etc.
8. Very personal recommendation : Every choice will still lead to all the content, but how they react to your choices is different. E.g., the choice to react angrily or understanding, which makes the other character react to you in kind. But, in the end you have the same content. In the 'angry' situation you make up with the girl <kiss, kiss, kiss scene> and in the 'understanding' situation she is happy you are so kind <same kiss, kiss, kiss scene>
The reason I like this so much is because you can give honest answers to how you feel about the situation without being punished for it.
Because you took the time to write all this, I'll develop a bit more.
1-2 : That exactly the problem with Mass Effect 1-3 Karma system. You don't play for fun anymore, you don't choose the action you like/feel is the most logical, you try to maximize your points... Because if you don't you will have a lot of non-optimal decisions imposed to you, and sometimes big ones, -- SPOILERS -- like a main character dying (like Wrex at the end of ME 1. Wow thanks god I optimized my points back then, or I would never touch the series again !).
They abandoned it in Andromeda. But the result in dialogues is... Meh...
3 : Nothing to add
4 : That's how most romance VN work. Probably for a good reason.
5 : The problem with most sandbox with location+time+fluctuating schedules for characters... The old "What the fuck do I do now" syndrome
6 : Maybe not super easy, but not stupidly long. Some games offers the option to increase income to reduce grind for player who aren't looking for that. That's a smart move. And it makes the "Hardcore" gamer feel good too because they play on hard. Haha.
7 : Except if the main focus of the game is the relation between those characters, I agree. It's giving yourself the bullet.
8 : Completely agree. Same tings, different dialogues for example. For small dialogue decision at least.
This is actually how I like to organize my stories : I don't want to force the player, but I like to give him the illusion of a choice. I'll give a concrete example :
You need to meet Chara A for story reasons (otherwise the whole game can't exist).
You are supposed to meet him at a party.
But if the player doesn't want to go there then fine, don't !
But a friend (Chara B) of the player goes there, and meets Chara A.
And then Chara B (the friend) puts Chara A in contact with the player.
You had to make it happen, but still give the player a choice.
And you can add small differences. Like if the player didn't go to the party, then he didn't saw the others getting drunk, which would have changed his vision of them (just a silly example).
If done right it works wonderfully, but it can be very complicated to apply to all situations. And if you abuse the pattern, the player will notice at some point.
Edit : And I actually believe that this is a way to make the players want to replay your game. "Hey, what would have happened if I didn't go to the party ? How would our relation be impact ?". Isn't it more interesting than a "Kaidan or Ashley" choice ?
Edit edit : You respect the player's choice, both are legitimate. Maybe he could have get hooked up at the party. But the player decided by himself to stay home.
That's a consequence that he can guess. So yes, maybe some content will be lost, but that's his choice. And maybe, if you are a smart (and lazy) writer, you can make the hook up scene happen later, and reuse the art.
No need for a WT here.