While sein is the most generally applicable way to denote the location of anything, it is indeed quite common in German to be more precise if possible.
Befinden is not more specific than sein when referring to locations, but it is a higher register in terms of formality.
Which more specific verb you can use depends a lot less on the kind of object you are referring to than on the position it is in (rule of thumb, there are exceptions):
Stehen (to stand):
applies to objects resting on a roughly flat surface if their height measured perpendicularly from that surface is significant relative to its other dimensions.
It applies to towers (and buildings in general), trees, flowers in a vase, furniture in a room, "Ein Buch steht im Regal" but "Ein Buch liegt auf dem Tisch" etc.
to indicate that something is oriented the way it is supposed to, independently of its shape (most specifically when it is resting on some kind of legs or wheels): a bed steht somewhere, even if it is not very high, glasses on tables (unless they have toppled over), plates on tables (unless they are upside down), pans and pots on the oven etc.
to indicate that some vehicle is currenly immobile (a car in a garage, a train in a station) but ships are an exception, they liegen im Wasser/Hafen/vor Anker etc.
Liegen (to lie) applies to flat or elongated objects resting on a roughly flat surface if their elevation above that plain is insignificant: paper (and pens) on a desk, cutlery on a table, [an estate/a village/a city] in a landscape, etc.
Hängen (to hang) is used if an object is either fixed to a vertical wall or suspended from above: A picture or a mirror on the wall, a towel on a hook etc.