1. a) 2 miners will not have SAME block(main transaction is different for every public account), but can find a block in same time - what happens then? what if it's same time (lets say same milisecond so lags in network can't count in, word isn't spread yet) in seconds and both spread the word to like 50% computers? computer A gets new block from miner A and computer B gets block from miner B - what will happen when computer A says to computer B "hey i got new block for you"?
Then the network is split. It happens occasionally. Once a computer has a valid "newest block" it ignores others blocks submitted. Both parts of the network will work on different chains. Once one part of the network finds the NEXT block it will have the undisputed longest chain and the other chain will be orphaned.
So for example:
current block is #123
mining pool A solves next block = #124 (we will call it #124A to keep it simple)
mining pool B solves next block = #124 (we will call this one #124B)
Each mining pool broadcasts their block to the network. So at this point in time some of the network has #124A and some has #124B as the latest block.
The network is split but don't worry both parts of the network are working on block #125. Which ever part solves the #125 block for THEIR chain becomes the dominant chain. So say a miner which has #124A solves the next block #125. When he broadcasts it to the network all clients will accept it. Even those w/ #124B because #124A, #125 is longer than their chain.
The bad news is the pool which mined #124B will get notification that their block is stale/invalid.
No reward coins for them.
Bitcoin has 10 minute block and very fast block propogation time. For mining pools to be competitive they need a large number of links to the network (to become aware of block changes & to push out their blocks fast) so chain splits are rather rare.
2. so i calculate hashes for 1 diff, and i send proper hash for pool and he just checks it? That looks reasonable and good, but here again(from work side) - how is work distributed to don't get same work as other miner? As i assume we are mining for same 'account' (key), so even main transaction is same for calculation - that will get nonce over-counted in like miliseconds with big pool. Even giving different extraNonces for every miner will give small amount of work to every worker. How workers get different work?
That is the job of the pool. Miners sent GETWORK requests the pool makes sure they all have different "extra nonce" values in the coinbase to ensure they are working on unique solutions. As far as the pool "just checking it". Yup. Remember verifying one hash is very easy. It takes a millionth of a second or less for a modern CPU. So every share you submit the pool takes the same raw data computes the hash, compares it to your "answer" and makes sure it is smaller than a difficulty 1 share.
If it is and the share isn't stale (no longer valid because a block change has occured) the pool increments your share count by one. For every 1 GH in hashing power the pool will need to receive and verify ~15 shares per minute. So Deepbit w/ 3000GH verifies about 42,000 shares a minute.