but am I correct in saying that the distinction is ONLY w.r.t. semantics? In other words, the browsers treat them exactly the same, technically they can be interchanged, and the person viewing the page will see no difference whatsoever?
Browsers without HTML5 parsers (except IE) treat unknown tags as inlines by default, so indeed you set those to display: block and then yes, they act like any other block element visually.
(assuming we take care to specify display:block to keep IE happy).
No, it's worse. IE doesn't treat unknown tags as inlines. It ignores their existence completely and doesn't include them in the DOM.
You must use document.createElement('theElement'); to add new HTML5 elements to the IE DOM.
Remy Sharp's famed "HTML5shim/shiv" does this, but you can also roll your own. It's a simple one-liner, and you only have to create the elements once regardless of how many of them you have on the page.
and therefore function exactly the same as a div
Function is a funny word. I would say, once the new elements are made blocks for browsers who need you to do that for them, they follow the same visual formatting rules that every other block element does. "Function" doesn't really make sense in this context.
The new elements, in browsers who do have an HTML5 parser, are supposed to come by default with one or more roles, an idea stolen from XHTML2. Whether technology other than screen readers will eventually react in some way to these roles, I don't know, but I know for example NVDA recognises at least some roles such as the default "navigation" role on <nav> elements.
Lastly, the hippy ideal is that multiple devices and softwares will actually do something useful with these new semantics, rather than also treating them "like divs". Other than screen readers, though, I don't actually know of any who do today. Someone working on HTML5 can correct me though.