環境
Windows10 pro 64bit
VisualStudio 2019
手順
新しいプロジェクトを作成する
Windows フォームアプリケーション(.NET Framework) プロジェクトを作成する。
タスクバーに表示されないようにする
フォームのデザイナを開いて「ShowInTaskbar」の値を「False」にする。

タスクトレイのアイコンが右クリックされた時のコンテキストメニューを用意する
フォームのデザイナから「ContextMenuStrip」を追加する。

追加した ContextMenuStrip に適当なメニューを追加する。
とりあえずフォームの表示、非表示を切り替える「Disp-Hide」と終了させる「Exit」を作る。

それぞれのメニューのクリックイベントを実装する。
private void dispHideToolStripMenuItem_Click(object sender, EventArgs e)
{
Visible = !Visible; // Formの表示、非表示を切り替える
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit(); // アプリケーションの終了
}
タスクトレイに表示するアイコンの設定
フォームのデザイナからコモンコントロールの「NotifyIcon」を追加する。

追加した NotifyIcon のプロパティで設定を行う。
ContextMenuStrip には上記で作成したものを設定。Icon,Text は任意に設定する。
Textに設定した文字列はポップアップとして表示される。

フォームのコントロールボックスを無効化しておく
フォームのデザイナで「ControlBox」の値を「False」タスクトレイのメニュー以外から閉じたりなどの操作をさせないようにする。

起動時にフォームを表示しないで実行されるようにする
Program.cs を次のように変更する
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
#if false
Application.Run(new Form1());
#else
// Formを表示しないで実行開始
using(new Form1())
{
Application.Run();
}
#endif
}
}
その他
タスクトレイアイコンがクリックされた場合になにかしたい場合は NotifyIcon の MouseClick イベントなどを実装する。

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
// 左クリックされた時の処理
}
}