iOS and Android pushes sent through the /api/push/ endpoint will handle inactive devices just fine. Please be aware that including inactive devices can slow things down a bit. After a push is sent, we receive feedback from Apple and Google which we use to update the device status on our side.
You will want to minimize sending push notifications to devices with inactive device tokens/channels as much as possible. When sending uni-cast pushes to individual devices, use our Channel Lookup or Device Information APIs to check the channels or device tokens used in your apps. Use the device information results to help update the active list of devices you send to.
You can reach opted out users with our In-App Messaging and Message Center.