If you use three separate properties for the coordinates, you'll need to use fully-specified variants in the blockstates file; like in the standard Vanilla format (e.g. "x=0,y=0,z=0": { ... }).
If you use a single property, you can use Forge-style variants (e.g."position": { "0": { ... }, "1": { ... }, ... }).
Each { ... } represents a single variant, where you can set the model, texture, rotation, etc.
I don't know what you mean by this. Block#getActualState just has to read the values from the TileEntity and return an IBlockState with the appropriate property values set, it shouldn't be storing anything in the TileEntity.