How high should the roost be? Higher than anything else you do not want them roosting on but as low as you reasonably can. Most chickens instinctively like to roost on the highest thing available. That is part of their survival instinct. Since you don't want them roosting in the nesting boxes, make them noticably higher than the nesting boxes.
The reason I suggest as low as reaonable is that they can injure themselves coming down from the roost, especially the heavier breeds. They spread their wings to slow their descent so it not like them doing a cannonball to the floor, and they do not injure thenselves often, even the heavy breeds, but it does happen. Also, they are not real graceful fliers. They can hit something on the way down, like a feeder, nest box, whatever. The higher the roost the more clear landing space they need.
You can use practically anything you want for nests, including milk crates. You are limited only by your imagination. Check out this thread for some ideas.
Nesting Boxes
https://www.backyardchickens.com/forum/viewtopic.php?id=41108
Fencing in the top of the run is a personal choice. A lot depends on how you build the run. You can fence in the top to keep the chickens from flying out if the run sides are not all that high or to keep predators out. Hawks can fly in and raccoons and many other things can easily climb in. It is hard to make a run totally predator proof, but it can be done. Even a run without a top provides a lot of protection during the day, but a lot of climbing things are active at night. Whether you fence the top of the run depends a lot on your individual circumstances and risk tolerance.