I don't like to be forced to re-compile it in order to load it for the following reasons:
ASDF solves most of these problems, including fasl file placement, especially if you are willing to write a line or two to load your codebase with some debugging extras (a (DECLAIM (OPTIMIZE DEBUG)), and i also have some macros that react to variables, notably dribble level logging stops being a no-op).
among the things you listed the only thing that i don't know how to solve in my ASDF/slime setup is losing track of what i've edited and haven't given to the lisp for redefinition yet. what i do is i keep track of it in my head, and whenever i suspect that things may be out of sync, then i press 3 key combination to restart the lisp and recompile/reload the project.
hth,