In a vanilla Rmd file, it renders as the first character of a column heading.
---
title: "kabel % demo"
author: "Richard Careaga"
date: 2021-12-26
output: pdf_document
---
```{r setup, include=FALSE}
library(kableExtra)
dat <- mtcars[1:5, 1:6]
colnames(dat)[1] <- "% fuel"
R Markdown
kable(dat) %>% kable_styling()

As the first line of text, it also works.

Where it *would not work* is within a $\LaTeX$ block, such as
\begin{enumerate}
\item % is the first character of this line
\end{enumerate}
because in this context % opens a comment. It needs to be slash escaped.
\begin{enumerate}
\item \% is the first character of this line
\end{enumerate}