I think I've figured out how the save system works. But it's so confusing I might be posting more incorrect information...
The save button in the VBA editor window generates a prompt to select which object and module you want to save if you have made changes to an object and module. The save button in the main Access window saves changes to objects but does not save changes to modules. There is no prompt when clicking this button. Closing Access will generate the same prompt as clicking the VBA editor save button.
The problem is that changes to the module will be saved even if it is de-selected in the save prompt (and the object remains selected). However, de-selecting the object in the save prompt while leaving the module selected saves changes to the module but not the object, as expected.
To save changes to an object but not a module, I need to click the Access window save button first, then close Access. This will trigger a prompt to save module changes and I can select "no". When I re-open Access the object changes are still there but the module changes are not.
Also, selecting "no to all" when prompted to save will not save changes to the object or module, as expected.
I keep testing this different ways and it seems like there's a bug to me or I'm still missing something. It would be better if closing a module window generated a save prompt for that module only, in the same way that closing an object generates a prompt.