Also, for the hashrate bit, trust the hashrate displayed in BFGMiner. The pool hashrate is just an estimate at how often you submit shares and what difficult they are
Correct - the hash rate shown in mining / monitoring software is the best indication.
Fun little tidbit: The true hash rate of a typical ASIC miner can't be determined short of extreme measures.
As guitarplinker notes, the pool-side indication of hash rate is an estimate based on your shares and the difficulty thereof.
Similarly, websites' estimation of the total network hash rate is an estimate based on the blocks solved and the difficulty thereof.
But the same applies to the mining software - its indication is an estimate based on the number of nonces returned in a given period by the hardware for the fed difficulty (if not fixed).
Even if you know the number of hashes the chip should generate per clock cycle, and you know the clock frequency the chip's working at, you still can't just multiply the two together; every once in a while, the chip will just get it wrong. Every time you see a HW error in mining software/monitors, that's not just indicative of the nonce it returned (after massaging, where applicable) not matching up with the software sanity check, but of every hash the chip generates.. but as the vast majority of the hashes never exit the black box, you can't check. A manufacturer could even claim that the chip never has HW errors...and there would technically be no way to actually prove that.
Mining software/monitors do provide the best indication, though, as they can average estimated hash rate over very, very long periods of time with a lot more data fed into them, building confidence - often even taking said HW errors into account to get closer to a true hash rate. Pools generally show your estimated hash rate over much smaller periods of time, and with a lot less data.