The SDK function returns true if it encountered no errors/problems whilst assessing the intersection. I've always counted the number of resulting curves or points to check if the objects intersect. Someone else might have a better way.
Yea, you have to watch this...I guess the RhinoScript expectation is that is if something doesn't work than it has "failed". I guess the SDK has more gray areas than that, so its definitely best to check whatever variables that were passed into the functions and see if they've been filled. Note that this isn't he only method that exhibits this behavior, but I can't remember which other common ones do.
Crvs won't be null, instead it will be an empty array. So the best thing to do is to see what the bounds of the array are (or the count or something). I'm not at a computer that I can write a little sample, but I'll try to get a quick example tomorrow.