در مورد سوال دوم با استفاده از خاصیت DisplayIndex ستون ها . فرض کنید دو ستون به با نام myFirstCol و mySecondCol دارید با اندیس دادم به آنها به صورت زیر می تونید ترتیبشون رو تغییر بدین
dataGridView1.Columns["myFirstCol"].DisplayIndex = 0;
dataGridView1.Columns["mySecondCol"].DisplayIndex = 1;
برای فارسی کردن عنوان هم روش های مختلفی هست
روش اول
برای خود گرید در حالت design ستون تعریف کنید و هدرش رو فارسی بگذارید . بعد از خاصیت datapropertygrid استفاده کنید و هر ستون رو به فیلد متناظر در دیتابیس نسبت بدهید .
روش دوم
در مسیر :
properties - columns - collection
میتونید ستونهای مورد نیاز رو اضافه کنید و در قسمت header text بدون محدودیتی که ذکر کردید فارسی تایپ کنید.
روش سوم
بعد از پر کردن جدول با استفاده از دستور زیر نام مورد نظر را به هر کدام از ستونها نسبت دهید.
dataGridview1.columns[].Headertext]=name;
در داخل [] شماره ستون را می نویسید و به جای name نام مورد نظر برای هر ستون را می نویسید که می تواند فارسی هم باشد.
**********************************************************
در مورد سوال اول هم سعی می کنم تا بعد از ظهر جوابتونو بدم