Moving focus between monitors works just like with one monitor. The focus will jump once you reach the "edge" of one monitor. The default binding is $mod+<arrow direction>.
For windows and workspaces, you need to define a binding in your i3 config. Note: windows are called "containers", and monitors are called "outputs".
For moving windows:
move container to output left|right|down|up|current|primary|<output>
For moving workspaces:
move workspace to output left|right|down|up|current|primary|<output>
Here'sThis is what I use in my i3 config:
# move focused window between monitors
bindsym $mod+Shift+greater move container to output right
bindsym $mod+Shift+less move container to output left
# move focused workspace between monitors
bindsym $mod+Ctrl+greater move workspace to output right
bindsym $mod+Ctrl+less move workspace to output left
Strangely, I'd expect the $mod+Ctrl+greater to require me to hit Ctrl and Shift at the same time, since you need to press Shift to type < and >. However, pressing just mod, Ctrl, and , works, which is very nice.
Note, you can also set a keybinding to send things to a specific monitor by its name.
Moving focus between monitors works just like with one monitor. The focus will jump once you reach the "edge" of one monitor. The default binding is $mod+<arrow direction>. See also: moving workspaces between monitors.