You’re on the right track.
When you do something like this in a form..
<input name="tax_input[formats][]" />
You create levels in the $_POST
array.
So you’d get the formats array like this…
<?php
$formats = $_POST['tax_input']['formats'];
Full example…
<?php
add_action('save_post', 'wpse74017_save');
function wpse74017_save($post_id)
{
// check nonces and capabilities here.
// use a ternary statement to make sure the input is actually set
// remember that `save_post` fires on every post save (any post type).
$formats = isset($_POST['tax_input']['formats']) ? $_POST['tax_input']['formats'] : array();
// do stuff with $formats
}