We are often told to only use web-safe colors for font's and background colors etc when not using an image. I don't understand why this is? Most websites contain high quality jpegs these days with minimum 16-bit color so why are we being restricted only to web-safe colors of which there are only 256?
It sounds like an out-of-date concept. I think there were problems when the colours could not be rendered, because they were sometimes shown as speckled - a combination of colours, that appear correct in large swathes, but would not work at all for narrower items like borders.
Unless you are explicitly designing for very old computers, then I would not consider this to be a valid restriction these days. If someone is telling you to use these, then ask them why - they may not know either.
The main issue with colours now is to ensure they are Accessible. Web-Safe colours were more releated to hardware compatibility (monitors and such like) whereas now we are more concerned that the colours pass the required W3C Accessibility guidelines.
Unless you're still reading w3schools, I don't think you're going to come across advice to use "web safe" colors much anymore.
When it was first given, browsers couldn't support the entire spectrum of colors available in a 6-digit RGB string. Now-a-days, ~100% of users support the whole RGB spectrum.
Some advice that is still relevant is to check your color accessibility. Make sure you've got enough contrast, and that you're not using colors that blend together for colorblind users. You'd be surprised how common colorblindness is, and many colorblind people don't see in greyscale, they just can't differentiate some colors.
One of the advocates of "Web-safe colours" many years ago was visibone.com. The idea was that when running on an 8-bit display, only 216 colours were actually available for the browser to assign as it saw fit. The 216 "web-safe" colours were thus chosen.
Unfortunately, there are several problems with sticking to this colour palette. The first was that whilst on Windows or Mac in 8-bit mode the browser can setup all 216 colours, in a limited-colour X Windows environment, it might have access to a smaller palette, which wrecks the 216 colour palette. The second problem is that most PCs run in 16-bit or 24-bit colour now and such a limited palette is pointless.
The last problem is that there are many colours that are not in the web-safe palette. It still provides a good starting point, but don't be bound by it.
Basically, Web-safe color are depends on the hardware component (like monitor). Many computer screens back then had 8-bit color displays, which could only display 256 different colors. The computer system itself uses some 40 colors, for menus and such, and the remaining 216 colors could be used to display the actual web pages.
Now, 216 colors might sound like quite a bit, but the problem is that no aesthetic considerations were made when these colors were decided, but rather they are based solely on mathematical formulas. To be more exact, the web-safe colors are what you get when you use 0%, 20%, 40%, 60%, 80% and 100% of the three different primary colors, and then mix these in every possible combination.
more details here: http://www.colorsontheweb.com/websafecolors.asp
RGB codes for web-safe colors are made up of the digit zero plus the other hex digits that are multiples of three: 3, 6, 9, C (12), and F (15). Additionally, the digits are always used in equal pairs.
See also list of web-safe colors: http://www.pawprint.net/designresources/web-colours.php
On the other hand I still can appreciate conventions sticking to a reduced color palette if they do not unnecessarily dampen the user experience or complicate development, that is.
Coming from a unit testing perspective, I launch Xvfb servers in 8-bit depth to conserve resources predominantly, and within those perform a plethora of web automation tests. My scripts take screenshots at critical steps or liberally for debugging. I try to save as optimized 8bit PNGs, but even in true color a lot of websites and web apps turn out looking pretty bad, or simply unreadable to the eye.
Not necessarily on the Linux/Xserver paradigm but also my Selenium grid uses Windows XP/Vista/7 hosts. Often not using the actual user's screen, but launches (and destroys) remote terminal sessions reduced to 256 colors, or virtual machines of those OSes.