When to use Join vs Parent vs Group I’m a bit confused when to use/not use Parents, Groups or joining multiple objects into one object.

For example I have 500 trees which are 2D images on planes. There are 25 different tree images that are duplicated to make up the total tree population. Can each variety of tree be one object even though they are spread throughout the scene or should they be grouped or parented? Or can all the trees be one object or each tree an individual object? Or is there other methods I haven’t considered?

I know that any of these options will “work” but what is the proper way to organize the various objects in a scene and why?

My understanding is that there are reasons for easier identification and locating items but I’m also interested in how these different relationships can affect workflow and even viewport or rendering performance.
Not sure if it's what you're after, but you could put your 25 original trees in a collection, then have a particle system emit instances chosen randomly from that collection.