I think you have several options depending on what your website/application is and does. Depending on your web application, you can implement sandboxing or a tutorial.
Sandbox
If your application is intended for users to fiddle around, then probably the best way to teach users how to use your application is by creating a safe environment that they can play, experiment and try stuff without losing data.
Below are a list of applications that let you do this:
Balsamiq, jsfiddle, repl.it, regexpal
Benefits
There are several benefits in implementing a sandbox. You won't need do list all your product features in your website, since it will be easier for users to test your application instead of reading about it.
Since you are creating a safe environment, you are creating opportunities for learning.
Drawbacks
Since this is basically an exploratory process, you might need additional effort to ensure that users really learn what you intended, instead of wasting time just exploring.
Tutorial
There are several ways to implement a tutorial. Nowadays at least for mobile apps there seem to be two different patterns (walk though, coach marks). Although different in implementation, these patterns follow the same principle.
When the user enters the application for the first time, or when a specific even occurs (like using a feature for the first time), instructions are displayed in context.
Benefits
This allows you present contextual help. So users will get the information where they need it.
When To Use
If your product is web-based and you want to allow potential customers to try at will your product.
Drawbacks
Users might want to explore instead of learn, so they might dismiss the tutorial. At a later time they might need to get that information, but will not be able to trigger it.
When to Use
If you have an application that is complex enough, that it takes some instructions for users to learn how to use it. Don't add a tutorial to your application just because it looks nice. If you feel that you need to add a tutorial, blame yourself for not being able to develop an easy to use application, and you needed to add a tutorial to teach your users how to use the application.