Why the shell is drawn by PHP
Most blocks store their finished HTML in the post. If the plugin later changes that HTML, WordPress compares the saved markup with what the block now produces, finds a difference, and offers to “attempt block recovery”. Every site that has used a block-based slider for a few years has met that message.
Ribbonfly Marquee saves only the inner blocks. The wrapper, the two copies of the content and the pause button are produced when the page is rendered. A new version can improve them, and your saved pages do not change at all.
What is inside the shell
The page receives two groups of your items. The first is the real content. The second is a copy that exists only to make the loop seamless: it is hidden from screen readers and marked inert, so a keyboard user never tabs into it and a screen reader reads each item once. The copy also drops any id attributes, so a heading anchor inside the strip is not duplicated on the page.
Items can be anything
Paragraphs are the obvious choice for text, but headings, buttons, images, quotes and social icons all work as items. A common pattern is a row of short paragraphs separated by a bullet or an emoji, each one a link to the thing it announces.
Where the speed is set
In the block's sidebar, under Motion, in pixels per second between 10 and 400. Behaviour on hover and focus, and the Pause button's placement, are under Pausing. Nothing is set per item: the whole strip moves as one.
If you want to see how a different speed feels before you commit, the speed guide has a calculator for it.