I'm new to blender and I've been trying to model a fairly simple house as a starting project. I'm thinking of building the various parts of the house as separate models, e.g. creating a model of a four pane window and then saving that as a reusable window (for any future projects), so if I want to create a house in the future, I can just load up the window and add it the model of the house. After some time I could have a large library of reusable objects. Is this considered good/bad modeling practice? should I be extruding/loop cutting a single mesh instead?
What you're describing is, generally, good modeling practice, but it comes with limitations that sometimes make it more trouble than it's worth for rarely-used assets, or for very small scenes.
In Blender, this is called Linking and Appending.
(I'll use 'source' for the original model and 'destination' for anywhere that it's replicated or linked to).
Linking will preserve a link back to the original model, so that if the source ever changes, all the links will get those changes (only after the destination scene is closed and reopened). Linked models only "live" in one place, so all the scenes that use that model don't have to store it, so they end up being smaller. However, linked Objects are difficult to work with. There are some things you can't do with them. Consequently, it's sometimes desirable to Link the Object, and then make the Object local. This will keep the Mesh as a link, but allow some edits. If a property can be edited, that property will neither update from the source, nor will it change the source. (The source can never be changed by a link.) For static props, this behavior is pretty easy to work with. For animated props and especially rigged characters, linking can require some very strange workarounds.
Appending makes a full copy of the source, and saves it in the destination scene. This makes it fully editable, but none of the changes to the original will be updated in the "destination."
Linking and Appending can apply to whole Worlds, Scenes, Groups, Objects, Meshes, Materials, ParticleSettings, and most other "things" in Blender.
Yes, a library is a great practice. You can then link or append those library files into a current project. I recommend using append because you can then edit that particular object in you current project file.
I also build a library of materials.