What's the difference between events in managed code and events in native C++ code?
The only difference you have to worry about is changing the event_source parameter from managed to native. The rest is handled internally within the injected source code.
Can I create an event receiver in C# that handles events fired from a C++ event source?
As long as the event source is created using managed C++, you can. You should, however, ensure that any event parameters use .NET data types rather than regular C++ data types, as was used this hour.