I created these basic rules for the design of 3D content to assist new developers in gaining traction on their learning curve.
Rule #1 - ALWAYS ensure your design is square to the world axis.
Rule #2 - Always center your design to the world axis where x=0; y=0 and the base of your content is at z=0
Rule #3 - Clean-up your mesh (no overlapping polygons, no random floating vertices, smooth your surfaces, etc.)
Rule #4 - unwrap your UV and map your textures WITHOUT overlap. Make it simple for the end-user to re-texture the item.
Rule #5 - Use a naming configuration that is logical (especially with rigging)
When it comes to texturing your models, 2 things play a major role - UV mapping and your materials. It is extremely difficult to try to mimic a real-life texture by creating one with software (Photoshop, GIMP, etc). The easiest way to duplicate the materials you find in the real world is to start with a photograph.
Bear in mind, your photograph alone will not cut the mustard. When snapping the image, make every attempt to align the image as it would be on the 3D world axis. This is very critical for textures that you will require to be seamless & tileable (things like mosaic tiles, brick/block, pavers, fabrics, wall finishes, etc.). After some editing of your photo in your graphics program, then you can utilize something like Bitmap2Material (Allegorythmic) to obtain all of your maps (Diffuse, Opacity, Normal, Specular, AO, Metal, Roughness, etc.).