A real yard is not for storage. It is for storing and rearranging cars for their next destination. This is called "classifying cars" hence the term "classification tracks"
Generally speaking a yard is also not a place to store complete trains. They go off someplace to destinations which is why we have some staging tracks someplace that may be visible or not.
The most important feature in my opinion a yard should have is a lead track that is separate from the main. The lead track is the track that connects to all the individual classification tracks. It also generally connects to a track or 2 (in real big yards many) double ended Arrival/departure tracks and obviously to the main. The yard lead should be long enough so a switcher can pull all the cars out of any of the individual class tracks. That way a switcher can pull a string without fouling the main and then sort the cars back into the individual class tracks. It is not often too hard to include a good yard lead. It is often parallel to the main, so it can be inside the mainline curves. And since switchers are normally the only locos that use it, it can have sharper curves.
As for double ended class tracks. Yes this is very convenient and flexible and great if you have the space. But realistically in O gauge, a ladder at end of the yard takes a lot of valuable space that is often better used for stub ended class tracks. If you can fit them in fine but remember each switch shortens it and the next tracks by at least 1 foot. Smaller yards were often stub ended.
A second important feature is an arrival/departure track or 2. A/D tracks are where a train arrives and departs the yard. These should be double ended and accessed also by the yard lead. The switcher uses this track to build up a new train, or pulls a train from it to break down after it arrives. This track should be separate from the main also and long enough to hold the longest train you run. It is generally just a passing track next to the yard.
As for coupling and uncoupling, that is very subjective and different for different types of layouts and operations. I am in 2 rail operate my layout with switchlists. Most of my uncoupling is done manually with "uncoupling picks" which might pointed sticks like skewers or small screwdrivers with long blades. I use Kadee couplers and simply insert the pick from the top between the knuckles and twist to uncouple. Coupling is simple, just push the cars together and they couple. For 3 rail with the magnetic couplers, manual can still be done, and easily if you like. I would just put one uncoupling track at the switch end of the siding . This is what we do with Kadee magnets too.
Generally as you say milk platforms, stock yards and other operating things are more distinations. Yards are RR property and used as above. Industries are private property and get stuff picked up and delivered. They might be on sidings adjacent to the yard or anywhere else on the layout. I prefer to keep such destinations away from the yard for 3 reasons. First I want to make up a train to go deliver cars from the yard and want destinations. Second, the yard is busy enough without adding another operator trying to spot cars at an industrial spot right where the yard operator wants to stand. Third, yard space in O is tight, I put the industries someplace else to leave more space for the yard.
Most yards to do have some sort of engine facility, but not all especially in the diesel era since they can just park a loco anywhere on a yard track and shut it down. It is nice if you have the space and you can enhance operations by requiring loco changes etc. The same is true of a caboose track if you run cabooses. You could also have an RIP track (Repair IN Place) for bad-ordered cars. There are probably some other auxilliary features you could add if you space. Many small RRs do not have these facilities in every yard.
One thing you can do if you want to add some operation is to put some double ended sidings someplace else on the layout, perhaps the other side of the basement, for "staging tracks" These tracks store trains that are "offline". You can then run trains from staging to the yard to pickup and setout (making some loops if you like) and then go back to staging. 2 tracks, one for a freight in each direction is a good basis.