Per the conventions referenced in a comment on the question,
Sequences consisting of C-c
and a letter (either upper or lower case) are reserved for users; they are the only sequences reserved for users, so do not block them.
So as a user, you redefine arbitrary keys outside of that range at your own risk, though of course people do it all the time.
Recently as I work on my config I've been trying to go back to original conventions as much as possible. For example, one of the first things in my first .emacs in 1995 was to bind query-replace-regexp
to M-s (instead of M-%), but I've just turned it back to M-%. It's still customized because I want regexp by default instead of regular, but it follows the convention so is more portable, easier to talk to others about, less likely to conflict with functionality added in the future, etc.
For what bindings I do add, I have been trying to use custom prefix maps as a way to get unconstrained namespaces. Relevant to your example about commands to mark things, I have a "mark-map" to support different functions to mark text objects. Of course you still need to bind the map to some prefix key, and maybe C-M-SPC would be a good choice, so mark-word
would become C-M-SPC w. Or if you wanted to be more standards compliant you could use C-c m. Or I think meta-capital-letter combinations are overlooked; how about M-M (shift-meta-m)?
(defvar mark-text-object-map (make-sparse-keymap)
"Keymap for selecting text objects")
(global-set-key (kbd "C-M-SPC") mark-text-object-map)
(global-set-key (kbd "C-M-@") mark-text-object-map) ;; How C-M-SPC shows up in some terminals
(define-key mark-text-object-map (kbd "b") #'mark-whole-buffer)
(define-key mark-text-object-map (kbd "w") #'mark-word)
(define-key mark-text-object-map (kbd "s") #'mark-end-of-sentence)
...
;; get a listing of the available commands
(define-key mark-text-object-map (kbd "?")
#'(lambda ()
(interactive)
(with-help-window (help-buffer)
(with-current-buffer (help-buffer)
(insert (substitute-command-keys "\\{mark-text-object-map}"))))))
All that said, binding new keys isn't everything. Decomposition can be a good strategy. Sometimes it's easier to do C-SPC M-f, or C-SPC M-e, than it is to bind and use a dedicated command :)