OK a couple of things - think about changing your mind on WP, the new version (Not yet public) WP 3.0 goes a LOT further than any prev. version of WP. Link to WP 3.0 download You may find that this answers/solves a few more of your "custom" problems than you imagine. Beyond that writing widgets is not to hard. At the end of the day they all use the same WP - PHP class. Once you have that code (too long to post here I think?) you can manipulate the code at will. The hardest part I usually find - and you may also - is actually in the theme not in the backend. As clients usually attempt to "stuff" many plugins into their system. Big problem is that not all plugins are well written and some conflict. Sometimes "client" education on plugins is hard.
With regards to best practice - follow the WP guidelines, pretty simple, and remember to use wp_enqueue for your JS includes rather than hard code them into the head.
If you need any help/advice etc. feel free to shout