I am will make Wordpress widget wordpress plugin and wish to allow it to be theme independent.

What i'm saying relating to this is always that I want this widget to help keep style occur its CSS no matter theme used. I am worrying that theme will overwrite its style.

What is the best CSS technique to get this done ? Must I use style according to widget ID(#) or its Class(.) ?

It's unlikely that somebody overwrite your look should you define a container by having an ID and also have all of your style terms make use of this ID within the selector.

#MyWidget p {
    color: #ffcc00;
}

#MyWidget p a {
    text-decoration: none;
}

The greater specific your selectors are, the greater priority they've.

once the wp_head() function is fired, use that to incorporate a stylesheet for your css file..

function wp_mywidget_css() {

    $siteurl = get_option('siteurl');
    $url = $siteurl . '/wp-content/plugins/' . basename(dirname(__FILE__)) . '/styles.css';

    echo "\n\n<!-- your plugin css styles -->\n";
    echo "<link rel='stylesheet' type='text/css' href='$url'>\n";
    echo "<!-- /your plugin css styles -->\n\n";
} 
add_action('wp_head', 'wp_mywidget_css');

place personal files known as 'styles.css' your wordpress plugin folder, which may range from the code in the publish above, this will stop any theme playing together with your styles, just title your widget styles something unique...