First of all, You don’t have to add ‘form’ html tag in the metabox.
You missed to pass the ‘$post’ parameter to the function ‘display_post_options’ and you used selected() function wrong too. Here is the code after I updated it.
function display_post_options( $post){
wp_nonce_field( basename( __FILE__ ), 'post_options_nonce' );
$post_options_select_value = get_post_meta($post->ID,'post_options_select',true);
?>
Choose Your Post Layout:
<select name="post_options_select">
<option id='right-sidebar' value="right" name="right_sidebar" <?php selected($post_options_select_value, 'right'); ?> >Right sidebar</option>
<option id='left-sidebar' value="left" name="left_sidebar" <?php selected($post_options_select_value, 'left'); ?>>Left Sidebar</option>
<option id='no-sidebar' value="no" name="no_sidebar" <?php selected($post_options_select_value, 'no'); ?>>No Sidebar</option>
</select>
You actually need to pass the value of the meta not the key in order to ‘selected ()’ function work properly.
Also you need to change this line :
add_action( 'save_post', 'save_post_options', 10, 2 );
to
add_action( 'save_post', 'save_post_options', 10 );
In your case, you need just one parameter to be passed to ‘save_post_options’ function.
I hope this would be helpful.