Gray scale is simply reducing complexity: from a 3D pixel value (R,G,B) to a 1D value. Many tasks do not fare better with 3D pixels (eg. edge detection).
You are not bound to the standard RGB -> gray conversion formula. If one of your color channels holds more vital information than the others, you can 'overweight' this channel at the other channel's expense - up to the point where you excerpt only a single color.
This applies for any kind of image processing - whether FPGA, MatLab or some other way of processing.
Grayscale images are more suitable for certain applications eg Image Steganography etc and when the image is in rgb format and our application needs a grayscale image then only we use the rgb2gray conversion, not always. When we are working with color image processing we need not to use rgb2gray conversion similarly if the image is already in grayscale.
As appropriately pointed out above, some times working with a single channel (either R or g or b) also can help and no need of conversion again.
I have no idea about fpga and hdl !!
i usually refer the image processing book by gonzalez.