The only grains I buy in bulk (50 or 55 lb. sacks) are domestic 2-row and Maris Otter.
Other grains that I use frequently, but not in enough quantity to buy in sacks, I buy in 10 lb bags that are more discounted than the single pound bags. These include pilsner, light and dark wheat, crystal, Munich, Vienna, and flaked corn.
I also keep about 10-20 other specialty grains that I have between 1-3 pounds or so of at any given time. Similarly to grains, I always have various hops in my freezer, usually about 10 types of hops or so. The ones I use most often, I buy by the pound, others I'll by single ounce packs. I also keep a bunch of different dry yeasts in my fridge.
This gives me the flexibility to decide to brew, concoct a recipe (or brew a tested one), and start brewing all in the same day without having to leave my house if I don't want to. More often than not, I brew on a whim, rather than planning a day in advance. If I plan in advance, I'll get a starter going and get the grains together beforehand... But throwing it together last minute makes great beer too!
I store all of my grain in tupperware containers that stack nicely and fit onto my wire shelves in my brewery area.