What is the difference
There is a huge difference between the two, one is in standard ES6 and the other is yet a proposal.
// Standard ES6
export { default } from './Button';
This is standard ES6: it is exporting the Default of Button from the current module (without altering the local scope of the current module)
// A Proposal
export default from './Button';
This is a proposal, and that explains why it does not work at vscode
Here is the proposal https://github.com/tc39/proposal-export-default-from (still stage 1)
Basically according to the proposal both should work exactly the same, the proposal is just another more elegant way of writing it - so that it matches how we export default in Standarad ES6.
Look here if you want to see why exactly the author of the proposal made it
https://github.com/tc39/proposal-export-default-from#common-concerns
Why they both work
JavaScript as it is often used today is no longer a mere interpreted language. It is more like a transpiled langauge, where what we write ( though in JavaScript or something similar) is still not the same that we send for the JS engine.
Now it works for you ( In your Code ) because part of your build system is taking code written with this proposal and transpiling it to standarad ES6. If we were to speak about Babel the most popular JS transpiler, this syntax is enabled with the following plugin https://babeljs.io/docs/en/next/babel-plugin-proposal-export-default-from.html.
Should I keep using the proposal
Preferably no, this is a proposal in state 1, even if Babel - or any other transpiler - makes it work, there is a chance that it never makes it to Standarad JavaScript. And if that happens there will come a time in the future will you will have to re-write that code.