It depends. There are a few different ways a number you're attempting to call may be disconnected.
In outbound API, Outbound Dial call, Or SIP trunking calls, if the destination number is not a valid number, Twilio will be unsuccessful in executing the phone call. If that's the case, Twilio will mark the call status as "Failed," and your project won't be charged. Or If Twilio process the call further in carrier network and carrier responds with 4xx/5xx/6xx SIP response with a typical telco message like "Dialled number is not in service/active" then these calls will not be marked as completed and your project won't be charged for that.
Twilio will mark the call as "completed" only when it receives a 200 OK (Answer SIP response) from the carrier and this answer response is generated when the destination user actually answers the call, or when some destination user's carrier routes the call to destination user's voicemail, and accepts the call. Other times, a number is disconnected because it belongs to a user who is delinquent. The carrier actually accepts the call. Then, their internal business logic determines that it should play an error message to the caller instead of ringing through. If that's the case, Twilio marks the call status as "Completed," and your project will be charged for the brief period it was connected.
For <Dial> calls, the incoming call to your Twilio number will be marked as completed as soon as we make the request to retrieve TwiML call processing instructions from your voice request URL regardless of what happens on the call generated by this TwiML. For example, an inbound call to a Twilio that results in an outbound call to an invalid destination would result in the inbound call being marked as completed, but the outbound call being marked as failed and outbound call will not be charged.