They used to take up just the space needed to store the value, but it's actually faster to read/write to them if they are stored aligned on a 4 byte boundary - Most other languages do something similar, but a little more complex.
If you have my plug-ins, you can test it yourself:
type test1_t
a as byte
endtype
type test2_t
a as byte
b as byte
c as integer
endtype
dim test1() as test1_t
dim test2() as test2_t
print get array item size( test1() )
print get array item size( test2() )
wait key
Quote: "Does a variable defined as byte actually only take up 256 bits?"
A byte will take up 4 bytes of space, but will only store a value of 0 to 255.
Quote: "Is the array CURRENT stored in the RAM or somewhere else?"
In RAM, unless the OS has paged it out to disk (which will only happen if you are very low on memory anyway).
Quote: "Is a ~2mb array cause for concern?"
Not at all - if you have 2GB of RAM in your system, that's less than 1000th of the memory, and you'll likely be using far more than that anyway just in the spaces used by your media.