it is not impossible to create a public key without a private key. it is just a pointless thing to do!
I was thinking this but isn't there a small fraction of public keys that can't be generated because they're private keys aren't accepted or is that something to do with the graph? As in that there's slightly less than 2^256 private keys, although it wasn't necessarily specified to be to do with the bitcoin protocol?
There are less private keys than 2^256. That is because the order (= number of points) of the curve bitcoin uses is less than 2^256
2^256=
115792089237316195423570985008687907853269984665640564039457584007913129639936
order n=
115792089237316195423570985008687907852837564279074904382605163141518161494337
So there are 2^256 - n = 432420386565659656852420866394968145599 less points than 2^256
But you CAN choose any of the 2^256 numbers to be your private key and you will get a valid public key from it.
If you choose a number bigger than the max value (no matter how much bigger), the max value will automatically be subtracted from your number, until your chosen number will be smaller than the max value.
PS. remember that there are only 2^160 bitcoin addresses, which is a lot less than 2^256, which means there are many public keys, that will produce same address
Do the other numbers not exist on the graph, or have I got something wrong?
The graph is continuous, And all the numbers exist in the graph, the limiting factor is P=2^256-2^32-2^9-2^8-2^7-2^6-2^4-1
that is chosen for curve secp256k1, which is what bitcoin uses.