Nice tut for simple plugins. For plugins that keep lots of state per element and allow subsequent modification thereof, I would suggest building with the jQuery UI widget framework. Among its conveniences are method calls via
$(element).customWidget('methodName')
I was pleasantly surprised to find the core to be completely independent of the template system, meaning there's no custom css mixed in there, and no explicit/hacky support for any of the jQuery UI widgets.
You need a little more than familiarity with programming to get started with a JS toolkit.
Most JS toolkits are heavily biased towards the browser environment, so you also need some knowledge of the DOM and the host environment provided by browsers for JS execution.