Any events that are shared by the form and by the business object (like BeforeSave) are called on the business object first. However, when you have a BO class defined in your application, the event is only raised on the instance, not within the class.
However, I think you might be talking about your event handlers for that event... if you handle the event in both your CustomersBO class and on the form where you dropped CustomersBO1, then most likely, the handler within the class will be invoked first. However, with event handlers, you can never be assured what order they will be invoked in (because a multicast delegate does not keep track of the order of the handlers), so, when you want to handle an event within the class that declares it, you will almost always want to override the On"EventName" method instead of actually "handling" the event. This way, you can control whether your code within the class will be executed before or after all of the handlers on the event. The actual call to the base method will raise the event, so you can place it at either the top, the bottom, or somewhere in the middle of your overriding method, and the event will be raised then. Like this:
Protected Overrides Sub OnBeforeSave(ByVal e As BeforeSaveUndoEventArgs)
'-- Call the base method to raise the event before the code in this method is executed
MyBase.OnBeforeSave(e) '-- The event will be raised here
'-- Do any extra code
End Sub
The OnEvent() definition is standard .NET coding practices, so just about any time you want to handle an event in a derived class you'll want to override that instead.