It's an opaque type, which means you can't actually do anything with it (which is why there is no API reference to it) all you can do is pass it in to QuartzComposer methods that take image types. The proper type would be "id" (note there is no *, id is a pointer type already)
sourceImage = [[QCRenderer QCImage] retain]; // I have no clue if this is correct, but it seems to work.
There's no reason to do this. I'm not really sure what it would do, but since you later overwrite the sourceImage with the output of your renderer it's almost certainly leaking something.
Technically, you would not even need the sourceImage variable as Objective-C allows you to do this:
[v001DestinationRenderer setValue:[v001SourceRenderer valueForOutputKey:@"SourceOutput1" ofType:@"QCImage"] forInputKey:@"DestinationInput1"];