BIP32 Neutered function Can the following be clarified, where I am wrong:

The Xpriv can derive a hardened xpriv.

It can also derive a non hardened xpriv, which we will use with the neutered function to make it an xpub. 

The xpub derived, is the same xpub that we would get if we had done CKDpub on the original Xpub.

Xpirv and Xpub with the capital 'X' can be seen as parent keys.

So a diagram would look like:

Xpriv -> xprivH (hardened)

Xpriv -> xprivN -> xpubN (Normal: This is the path from the xpriv using Neuter)

Xpub -> xpubN (Normal: This is the same path from the Xpub using CKDpub)

My other question on top of this, is if a Wallet software has the mnemonic key, would it be better to always derive from the mnemonic?

Or would they keep the account level xpriv, it seems like a waste to have both the mnemonic and the account level xpriv on the device.

Also, Is the extended private key, the (private key + chain code), or is it the (magic + depth + fingerprint + index + chain + key) ?
It can also derive a non hardened xpriv, which we will use with the neutered function to make it an xpub.
The xpub derived, is the same xpub that we would get if we had done CKDpub on the original Xpub.

Yes. Neutering really means &quot;Do CKDpub and delete the Xpriv&quot;. There is no neuter function on Xprivs; it's for the wallet software, not the key derivation.

My other question on top of this, is if a Wallet software has the mnemonic key, would it be better to always derive from the mnemonic?

Deriving from the mnemonic requires additional computation, however requires less storage space. I don't think it really matter.

Also, Is the extended private key, the (private key + chain code), or is it the (magic + depth + fingerprint + index + chain + key) ?

The second.