I am not sure if there is an agreed "best practice" for tool libraries. I think it depends how many programmers are programming for the same machines as then the issue of standardisation comes into play and as regards the setting up of material libraries, I haven't come across anyone using that feature.
Up until recently I only ever machined Aluminum here and so for our Hermle had only one tool library set up with speeds & feeds set accordingly. Another chap and myself both program for the Hermle and we use the same tool library which is kept in a network location, as is all our other tool libraries, Machining Processes and Operation / Process Templates. However, last year we picked up responsibility for some other machines, one of which makes parts in Aluminium, Steel, Cast Iron, Carbon Fibre and (my least favourite) flame-cut Stainless Steel. Up until now I have been maintaining separate tool libraries for each material but I have been toying with the idea of combining them into one library using the Material Library. There is an obstacle though in that I make use of the Tool Message fields in the tool library to note the tool ID, its maker, the insert code etc and these get used to output program set-up sheets when the program is posted and I really would be sorry to lose that as I don't know how I would flag up that we use different cutters for different materials.
Tool libraries and their management is a fascinating subject as I see it as one of the keys to efficient and consistent programming.
I am not sure if this has helped you though.