I would test and see. If you decide to do this please share your findings
I understand that for lists less than one hundred things are fast. For larger lists the only way to know for sure would be to test. Same as above should you decide to test.
Second set of questions:
A deletion is a deletion. A removal is a removal. Hope this makes sense.
If you delete an entry it will be deleted from the dB and thus not show in a list. If you just remove it from a list then it continues to exist in the dB but not in that list.
Think of a data type entry as an entity. If it is deleted from the dB it is deleted everywhere. It is gone. So … if this entity was deleted from the dB and was part of a list of another different entity … it is gone now.
Double relationship. Lots of stuff to talk about here. One simple comment on the situation you present is that the song being related to the album makes the list of songs of the album pretty much irrelevant. Unless … there is a purpose for that list of songs other than just being part of the album. Of the song where to be part of other albums then keep the list of songs in the album and delete the field album in the song object.