CSS 트랜지션은 원래 "이미 화면에 있는 요소의 속성 변화"만 다뤘습니다. `display:none`이던 요소가 `display:block`으로 막 나타나는 순간에는 시작 값이라는 게 없어서, 모달이 스르륵 나타나는 연출은 keyframes 애니메이션을 쓰거나 JS로 `requestAnimationFrame` 한 프레임 뒤에 클래스를 붙이는 식의 우회가 필요했습니다.
`@starting-style` 블록 안에 정의한 값이 바로 그 "나타나기 직전" 프레임입니다. `transition-behavior: allow-discrete`와 함께 쓰면 `display`·`overlay` 같은 비연속(discrete) 속성도 트랜지션 대상에 포함되어, dialog나 popover가 `display:none`에서 페이드인하는 걸 트랜지션 한 줄로 끝낼 수 있습니다.
기본 지원은 caniuse/MDN baseline을 확인하세요. 미지원 브라우저에서는 여전히 keyframes `@keyframes`로 등장 애니메이션을 만드는 것이 표준 대안입니다.
언제 쓰나
모달·팝오버·토스트가 display:none 에서 나타날 때 keyframes 없이 부드러운 페이드인을 주고 싶을 때.