Widget constructor: about $id_base and $options

The reason is simply customization (these values end up in widget’s HTML markup). If someone needs to change this stuff (for example to be compatible with some script without adding wrapper layers) the option is there.

As for methods calling – parent:: explicitly calls method from parent class, $this-> calls method from current class. Since widgets do not redefine WP_Widget method there is no practical difference.