How to have different text shown in figure caption and in outline?

Are you using the function cite() to add the sources to your figure captions? If that is the case, you could use an empty show rule inside the outline entries to hide the citations.

#show cite: it => [ \- Source #it]

#show outline.where(target: figure.where(kind: image)): it => {
  show outline.entry: it => {
    show cite: it => { }
    it
  }
  it
}

#figure(
  box(stroke: black, inset: 10pt)[some image.png],
  caption: [This is my caption #cite(<hh2010a>)]
)

#outline(target: figure.where(kind: image))

// .bib file from https://wiki.contextgarden.net/Sample_bib
#bibliography("refs.bib")

I created an example project here if you want to check the content of each it in the different show rules.