You do not have to formally escape colons. Instead put your command's argument with colons wrapped in single quotes in a variable. You can use other variables inside your argument string as per the example below.
Then eval that "stringified' command with the variables like the following (the example is for curl to trigger external deployment, but should work for every command):
deploy_job:
variables:
DEPLOY_CURL_COMMAND: 'curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $DO_APP_PLATFORM_API_TOKEN" https://api.digitalocean.com/v2/apps/$DO_APP_PLATFORM_STAGE_FRONT_APP_ID/deployments'
script:
- echo "Stage Deploy to DigitalOcean App Platform"
- echo $DEPLOY_CURL_COMMAND
- 'eval "$DEPLOY_CURL_COMMAND"'
Be very precise with all the quotes, dashes and spaces along the script. YAML is quite unforgiving. Check the syntax with GitLab pipeline linter.
If you use the project / repository level variables do not forget to uncheck protected checkbox (checked by default) when setting a variable and using it in unprotected branch (which is a branch default state).