Implementing the interface in your own class exposes the well known .Dispose method. The developer using your class then knows to use the "using" clause. This syntax tells the compiler to convert this whole block to a try/catch/finally which will ensure that .Dispose gets called whether the developer explicitly calls it or now.
Implementing IDisposable is typically done when the class author knows there are resources used in the class that "must" be released as soon as possible upon completion of the work. So, they put the code to release those resources in a public method called .Dispose. In the case below, SqlConnection executes .Close and various other things in the .Dispose method. If you use a tool like Reflector to disassemble the .NET Framework assemblies (they are not obfuscated), you can see what the Microsoft developers have done.
using(var connection = new SqlConnection("blah blah blah"))
{
// do some stuff
}