Widget Best Practices / Widget Building - this should get you started :)
As for the second part of your question - in most cases, your custom made, optimized for particular purpose Widget should be more lightweight than one of the ones provided by GWT (because they have to be more robust, etc). That being said, the widgets provided by GWT are quite lightweight IMHO (this is part of the whole concept of GWT - they give just the small/simple, but well built blocks to build your own application/framework).
One other thing worth noting is that the widgets provided by GWT sometimes have special implementation for a particular, ill-behaving browser (*cough*IE*cough*) - but that's not something you should be worrying about most of the time, since you should be building your Widgets one "level" higher (that is, your widgets should contain widgets provided by GWT), so that you won't have to deal with those incompatibilities between browsers.