The problem is that you are using the old-style "backticks"-notation for the command substitution. Their use is discouraged, among other reasons because they cannot be nested easily.
The error messages you receive can be understood if you consider that your command-substitution only spans your command up to the opening backtick of your query condition, i.e. only the part
aws rds describe-db-cluster-snapshots --db-cluster-identifier creditpoc3 --query 'DBClusterSnapshots[].{DBClusterSnapshotIdentifier:DBClusterSnapshotIdentifier,Status:Status} | [?DBClusterSnapshotIdentifier ==
The shell then tries to concatenate the variable snap_count from
- the result of that command invocation - which the shell can't parse because you have an unbalanced opening single-quote (this is the reason for the first of your two error messages)
- the interpretation of
'"$snap_name"'which results in the literal string"$snap_name"because from the point-of-view of the shell, it is placed in single-quotes, and then - another command-substution started by what you inteded as closing backtick of your query condition. This would be the output of the command
']'' | grep creatingwhich again has unbalanced single-quotes and is the reason for the second of your two error messages.
The result, as noted by @ilkkachu, is that $snap_count is assigned the only valid part of the assigment, which is the literal string "$snap_name".
Use the recommended $( ... )-notation for the actual command-substitution instead (i.e. instead of the outer backticks), this will not lead to conflict with the ` ... ` that you presumably require for the query syntax in the ?DBClusterSnapshotIdentifier condition.