(1) The weight volume is supposed have 1 volume, which matches the base dataset in size. The values in there are non-negative values indicating what weight to give to each voxel -- to be simplest, they should all be between 0 and 1 (inclusive). Note that if you simply want to
exclude a region from the automatic weight, the '-emask' option can be used.
(2) To quote from 3dNwarpApply's help:
A single nonlinear warp (usually created by 3dQwarp) is an AFNI or NIfTI-1
dataset with 3 sub-bricks, holding the 3D displacements of each voxel.
(All coordinates and displacements are expressed in DICOM order.)
The '-iniwarp' dataset must "conform" to the '-base' dataset -- that is, the grid spacings must be the same,
and the voxels must perfectly overlap. However, the '-iniwarp' dataset can be larger than the base dataset.
Some other formats are also allowed -- see the help for 3dNwarpCat.
The units of x,y,z displacement are mm,
not voxels.
But why are you creating your own input for '-iniwarp'? Sounds a little perverse to me. Do be aware that DICOM coordinates are different than those produced by FSL or SPM, so if you are using a warp produced by those packages, you'll have to (a) make sure the order of sub-bricks is correct, and (b) negate the x and y displacement values to switch to DICOM coordinates.
You ask very specific questions, which are hard to answer usefully without context.