As I understand it, pixels lack any actual dimensions so the PPI (pixels per inch) measurements are to do with the image format being used and the device it is being displayed/printed/rendered/used on.
Depending on the image program you are using and how it handles the format, you may never know about PPI and instead only care about the pixel height and width values.
Yeah, the limit is really high. Keep in mind that due to how lossless compression works, if you have any repeated colors (you should if it’s a logo) then that’ll greatly reduce the file size.
Just for fun, is the max size acheivable? Each pixel is 4 integers from 0 to 255 (RGB and alpha because it’s a png), and 2^8 is 64, so 0 to 255 is 8 bits, or one byte. So 4 bytes per pixel time 40x40 pixels is 6400 bytes, or 6.4KB. Even with a bit of header information, I’m pretty sure it’s impossible to hit 100KB.
Cheapest would be to just put up a 480-line flat panel computer monitor and blow the avatar up to 480x480.
They could also put up a 40x40 LED matrix, driven by something like a Raspberry PI. But, the dimensions are a bit weird. Commercial matricies tend to be in powers of two – you can easily get a 16x16 or 32x32 or 64x64, but not a 40x40. You’d have to build THAT out of 25 8x8 units or something and then implement your own control circuitry.