E.g., use gsub
to substitute the respective words with "*word*" (using a regex pattern).
library(tidyverse)
library(ggtext)
diamonds %>%
mutate(cut_fill = gsub("(Very|Ideal)", "\\*\\1\\*", cut)) %>%
ggplot() +
geom_bar(mapping = aes(x = cut, fill = cut_fill)) +
theme(legend.text = element_markdown())

The opposite, italicising all and leaving just a few words regular, is more complex and the complexity of its solution will hugely depend on the position of the "non-italics" words which you expect. In particular, would they always be the first or last word, or always in the middle, or both. In the example below, I assume a position always at the beginning and am using an optional capture group.
diamonds %>%
## due to if else factor behaviour
## see also: https://stackoverflow.com/questions/6668963/how-to-prevent-ifelse-from-turning-date-objects-into-numeric-objects
mutate(cut_fill = ifelse(grepl("Ideal", cut), as.character(cut), as.character(gsub("(Very )?(.*)", "\\1\\*\\2\\*", cut)))) %>%
ggplot() +
geom_bar(mapping = aes(x = cut, fill = cut_fill)) +
theme(legend.text = element_markdown())

Created on 2023-04-19 with reprex v2.0.2