It does, but it's not completely reliable for me. Also, you have to configure it to make it actually work.
For example, here's my mouse-related tmux config:
set -g mouse on
# enter copy-mode by scrolling, but don't select the pane
# The usage of #{mouse_any_flag} just forwards mouse events when in a fullscreen app that wants them
bind -n WheelUpPane if -F -t = "#{mouse_any_flag}" "send-keys -M -t =" "if -F -t = '#{alternate_on}' 'send-keys -t = Up' \"if -F -t = '#{pane_in_mode}' '' 'copy-mode -e -t ='; send-keys -M -t =\""
bind -n WheelDownPane if -F -t = "#{alternate_on}" "send-keys -t = Down" "send-keys -M -t ="
# Start copy-mode with PageUp
# For PageDown, if we're not in copy-mode, discard it
bind -n PageUp if -F "#{alternate_on}" "send-keys PageUp" "copy-mode -eu"
bind -n PageDown if -F "#{alternate_on}" "send-keys PageDown" "if -F '#{pane_in_mode}' 'send-keys PageDown'"
tmux handles mouse events very well. Scrolling, pane resizing (in tmux and vim), selection work once you add one line in config. For me it works so perfectly that it successfully goes in nested tmux sessions over ssh.
However, some people complain about mouse issues. I would suspect that some terminal emulators are trying way too hard to properly handle mouse events.