> How do I know when a subscription expires
You calculate the expiration date from the purchase date and the type of subscription.
>is cancelled by the user?
You can't. But cancellation is rare.
>Does Apple push this information to my app automatically,
Apple will push a renewal of an autorenewable subscription to your device.
>do I have to execute a command such as SKReceiptRefreshRequest or restoreCompletedTransactions?
It is best to infomr the user that it appears their subscription has expired and then do one of those 2 things to double check.
>What is the difference between requesting a receipt refresh and restoring completed transactions?
Very little. For an autorenewable subscription, the restoreCompletedTransactions will cause StoreKit to send future renewals to the device.