I don’t know if there is a description of best practices anywhere, but i can maybe help.
if an image texture is used in 2 different materials, it will still be stored only once in memory.
Image textures will use memory very quickly if you use large resolutions, because each time you double the resolution, you actually multiply the number of pixels (and memory size) by 4x.
Also, be wary of 32-bit textures, like HDRIs and high quality displacement maps, they are much heavier than standard textures.
Procedural textures (noise, voronoi, etc.) use almost no memory, because they are just maths, but they render slower than image textures.
A lot of the memory use in a scene will come from 3D models. There are a few features that make it easy to use lots of memory without realizing. Take a look at the modifiers in your scene:
-Are there lots of objects with subdivision surface, or maybe a single object that uses a high subdivision level? Each level increases memory use exponentially, so see if you can go lower.
-Other modifiers to be wary of: array, multiresolution, remesh, screw, ocean, fluid. Basically, the ones that add lots of data, expecially if you have them disabled in the viewport, they will all come back at render time and take lots of resources.
-Beware smoke simulations and .vdb volume files, they can be heavy, they are basically 3D textures.
Something else to check is instancing. If you have multiple objects that are identical and will always stay that way, you can duplicate them using alt+D instead of shift+D. This will create a linked duplicate (also called an instance).
Instances are objects that share the same mesh. If you go into edit mode and change one of them, they will all change. Even better, they will be counted in memory only once (but this only works if they don’t have modifiers on them). You will know you have done it if you duplicate an object and the scene’s polygon count doesn’t change.
if you already have multiple identical objects placed in the scene, it’s possible to make them into instances with the “link object data” tool.