It depends on your situation, but most of the time it's not necessary to use the PhidgetManager - you just use the OpenAny() call. The Manager is only really needed when you want to enumerate an unknown number of Phidgets.
At any rate, the correct practice, it to not mix event driven code and blocking code. If you are going to use the Manager attach events, then:
1. create your new object
2. register a new attach event for it
3. open it
4. return from the manager attach event.
5. when the new device attach event fires, you can initialize the device from within that event.
If you want to use waitForAttachment, then you would poll the attachedDevices list of the Phidget manager in your main() loop, calling open and waitForAttachment() as you find devices you wish to open - this method is clunky and not really recommended - mostly it is only for languages which don't support events.