When releasing from a parent POM, won't all its modules have the same release version and dev version as this parent?

Maven Release Plugin will prompt for each project's version.

How can I release a parent POM without releasing all its modules?

You need to pass the -N flag to Maven and configure the Release Plugin to pass the -N flag on its forked builds with the -Darguments flag.

Here's an example:

mvn -N -Darguments=-N release:prepare mvn -N -Darguments=-N release:perform
How can I hide my username and password?

Add a server-entry to your settings.xml, where you define your credentials (see settings.xml#servers for more details). Since you can't set an id for the scm in your pom.xml, you should add a property pointing to the server-id.

... my-scm-server ]]>
How can I customize the comment prefix of a commit during release preparation?

By default the plugin will prefix the comment with [maven-release-plugin] . You can change this by adding -DscmCommentPrefix=#42 to the Maven command.
If you need to end this with a linebreak, add ${line.separator}.
If the comment prefix contains whitespace characters, surround the argument with quotes.

When using the plugin-configuration, you can't end with a space, because Plexus will trim the content. But you can end with a linebreak just like the example above:

#42${line.separator} ... ]]>
Why is release:prepare failing when trying to tag with "svn: Path '...' does not exist in revision ..."

If the pom.xml has no scm-section but inherits one from its parent, the prepare goal will fail when trying to tag. The message will be something like:

svn: Path '...' does not exist in revision ...

To fix it, roll-back the release, add the scm section to the pom.xml, commit and retry the release.