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 device information APIs to check the device tokens or channels 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 and Rich Messaging.