Should I refinish hardwood floor with scratches?
If the scratches are all in the finish rather than gouging the wood, then (depending on what finish is already there) a "screen and re-coat" pass might be another option. That approach just roughs and somewhat levels the surface of the existing finish, then lays down a fresh coat on top of it. Faster and cheaper, can yield good results if the floor's basically in good condition, doesn't cut into the "wear layer" of laminate flooring as much as a full refinish would... but won't take out any deeper damage and may not be applicable for all finishes, especially if they've had polishes/waxes applied on top of them.

(I just know it's an option, can't advise on details. Personally, I sorta like the fact that some of my floors have clearly been in use as long as the house has stood here; as long as there's enough finish to protect the wood and it's clear enough to let me see the wood, I'm happy.)

Unless you want to darken the wood, I wouldn't consider staining unless necessary to match color in a damaged area... especially since you have to strip ALL the varnish off first or the stain will go down unevenly. Remember that wood looks different dry than it does either wet or under a varnish (try wiping it with denatured alcohol to get a better sense of what it will look like when varnished). Also remember that the varnish may add some color of its own, depending on what you use.