Three symptoms, one cause: the fence isn't doing what you think it's doing.
Only a fence can carry a language name. The four-space indented style gives you monospace text and nothing else.
Backslash escapes don't work inside code blocks. To show three backticks, open the wrapper with four.
Misspell the identifier and you get no error, just a flat gray block. If your code looks plain, check the spelling first.
Inside a list, indent the fence to the item's text. Inside a table, you can't use one at all. Use inline code instead.
Slack drops the highlighting. A plain-text application form drops everything, backticks included. Test the destination.
Diff blocks, tilde fences, and the indentation each container needs, with examples.