Shortcode attributes don’t appear?

You are return two times! The first return exit the function, so your shortcode outputs always “Hello World”.

Correct code:

function hello( $atts ) {
    extract( shortcode_atts( array(
    'foo' => 'something',
    'bar' => 'something else',
    ), $atts ) );

   print_r($atts); // Remove, when you are fine with your atts! 
   return 'Hello, World: '.$atts['foo'];

}
 add_shortcode('hw', 'hello');

For the second question: do a print_r($atts) after the extracts part!