implicit operator

Implicit means that the conversion doesn't require a cast in your code.

You can now do this:

Savepoint point = new Savepoint();
if(point) // becomes a bool using your operator
{
}

instead of having to do this:

Savepoint point = new Savepoint();
if((bool)point) // an "explicit" conversion
{
}

One example of why this is a useful distinction is numeric types. There's an implicit conversion from "smaller" types to "larger" types, e.g:

float f = 6.5;
double d = f; // implicit conversion

But converting larger types to smaller types can be dangerous, so there's only an explicit conversion, forcing the user to clarify that he really intends to perform the operation in question:

long l = 20;
// short s = l;
short s = (short)l;  // explicit conversion

That looks like misuse of an implicit operator. I don't know what the Savepoint class does, but converting it to a boolean does not seem logical. The implicit operator enables you to check if a Savepoint reference is null or not by simply evaluating the reference:

if (point) {

instead of:

if (point != null) {

If it's used that way, that is hiding what the code is actually doing, and that goes against pretty much everything that C# is about.