The other thing is that, mostly for historical reasons, most data is broken up into 8-bit bytes. It could have been any number, but 8-bit computers were really popular when things were really first getting standardized, I guess.
So for example, text is often stored with one 8-bit byte per letter (in ASCII mode). Data files are often indexed using pointers to byte indexes. People talk about kilobytes, and megabytes, and they mean 1024*8 bits. or 220 * 8 bits.
Bytes are kind of the universal unit of computing for a lot of purposes. If you want to edit a standard file read by other programs, you're most likely going to need to load it into a byte[] and manipulate individual bytes at some point.
If sun didn't include a byte datatype, writing java programs that worked with data or text from other programs would have been a huge pain. You would have to load integers, and do shift and and operations to isolate individual bits, and divide indexes by 4 all the time. Not fun.
So bytes weren't really added to save memory, but for compatibility sake.
Because a byte can have one of 28 = 256 possible values, Sun decided they should denote -128 through 127, rather then 0 through 255, because they didn't want to deal with having signed/unsigned numbers (none of their datatypes are signed)
They used two's complement because it's the standard way of dealing with negative numbers.