In general, the best thing you can do to optimize at the model level is not waste vertices or texture memory. Prefer using lower resolution meshes and normal maps for high detail over high resolution meshes, and don’t use higher texture resolutions than you have to. If a 512x512 texture shows enough detail, don’t use a 2048x2048.
On most modern desktop graphics hardware, however, the number of draw calls you make are probably going to have the largest effect on framerate. Using things like batching and instancing to lower draw call count will have a drastically greater effect in most cases than lowering mesh/texture resolution. Also, if you have crazy complex fragment shaders, those will likely become a bottleneck before geometry complexity will.
When it comes to the models and textures, “waste not, want not” and you’ll probably be fine. If you hit a specific issue bring it up here and I’m sure you’ll have no lack of help resolving it.