I might be wrong, but the code on the referenced site seems OK. I haven't tested it, though.
This is true, because the delete function takes one argument which is of type BSTNode** node. This is NOT a pointer to the node. This is a pointer to the parent's node pointer to the node itself. This might be a little sloppy, but I must admit after realizing what the code does, it is an elegant in its way solution. So when you rewrite (*node), you are not rewriting the node itself, instead you are rewriting the node's parent's pointer to the node. Effectively the code is doing what you suggested in a slightly perverted manner :D. Hope you understood what I meant and I hope I got it right.
I would also recommend that you read further about red-black trees, since this article gives insight only to creating the tree, but the described structure has no asymptotic bounds for its height. If, e.g. you push sorted values in this structure, it will be a connected list instead of a balanced tree.