Not trying to rip someone off here, recently had a situation where double spending saved the day.
My question is, what is the best way of double spending? (I have almost no clue what I'm talking about, please keep that in mind.)
IMHO the best way would be to avoid having to double spend in the first place. Most wallets calculate the fee for you in a way that double spending is not needed.
Sending any amount without fees to 2nd address, then spend from 2nd address and resend from 1st address to a 3rd address with fee? (Would it then pick up the 0 fee transaction if transactions on 2nd address were made with fee (although input is still unconfirmed?))
Im not entirely sure, but it sounds like you describing child pays for parent[1]. The first transaction without fee has to be confirmed for the 2nd transaction to get a confirmation. More often than not this happens even though I am not entirely sure if miners have this implemented yet. What you will often see is that the TX without fee and the follow up TX with fee get confirmed in the same block.
Spending minimal amount without fees to 2nd address, where some additional coins gets sent back to yourself, which should make it minimal priority since it's so small, then send whole balance including the few unconfirmed ones that got sent back to yourself to 2nd address, then send new transaction with whole balance with fee to 3rd address?
If the minimal amount is small enough - aka dust - the first TX (A) has a smaller chance to get confirmed, because transactions creating dust are not relayed by bitcoin core nodes. Thus it would be difficult for A to reach a miner. The follow up TX (B) might be rejected by nodes because they do not know about A and thus do not know about the input B tries to spend. Im not entirely sure each nodes checks the inputs though.
I'm also thinking, if there's some reliable way to do this, maybe quite a few scams could be prevented by preemptively setting up a double spend scenario with a potential seller so that you have the option to chargeback if he turns out to be a scammer?
There is no reliable way. Shoehorning chargback into bitcoin will only work reliable if you have >50% of the networks hash power to reorder the blocks if needed. This scenario is known as 51% attack and could be a problem for the network in general. In the past when any pool was close to 50% it lost mining power due to miners switching pools. This is also insanely expensive.
A Bitcoin transaction is meant to be irreversible. If you can not trust the person you are trading with use escrow and wait for at leats 1 confirmation when accepting bitcoin as payment. More for high amounts, the number depending on your personal needs.
Double spending against companies that accept 0 confirmation TX will most likely not work either. As long as the company is large enough to have several nodes they can keep broadcasting the inital TX which makes your double spend attempt invalid for most other nodes. They could also - and I assume most do - contact mining pools directly in order to have the TX handled with priortity.
[1] a little more here:
https://bitcointalksearch.org/topic/child-pays-for-parent-patch-182953and here:
https://github.com/bitcoin/bitcoin/pull/1647